我試圖通過使用隨機性作爲概率替換的簡單方法來創建Buffoon的Needle實驗。 pi的值可以從等式 pi = 2 * ln/th中找到,其中l =針的長度,n =針落下的次數,t =線的寬度,h =針穿過線的次數。 我假設l = t,從而將我的等式減少到pi = 2 * n/h。 現在我已經做了兩個代碼。 代碼1:這是關於蟒蛇的隨機選擇
import math, random
h = 0.0
n = 0.0
for i in range(0,10000):
a = random.random()
if a > 0.64:
h = h+1
else:
n = n+1
re = 2*(n+h)/n
print "Value of pi is ", re
err = (math.pi - re)*100/(math.pi)
print "Percentage error is ", abs(err)
現在這一個運行良好,並給了我足夠好的結果。 但是,下面的代碼一遍又一遍地重複相同的答案。 代碼2:
import random, time, math
h=1.0
n=1.0
err = 0.0
while err < 0.1:
a = random.random()
if a > 0.64:
h = h+1
else:
n = n+1
re = 2*(n+h)/n
err = (math.pi - re)*100/(math.pi)
print "Number of attempts is ", n+h
有人能告訴我爲什麼嗎?
未之間均勻地產生的值,它回答您的問題,但你的程序,在這兩種情況下,接近於2/0.64,不PI。這與布馮的針沒有關係。 –