私は、確率の代わりにランダム性を使用するという単純な方法で、Buffoon's Needle 実験を作成しようとしていました。pi の値は、式 pi = 2*ln/th から求めることができます。ここで、l = 針の長さ、n = 針を落とす回数、t = 線の幅、h = 針が線を横切る回数です。l = t と仮定したため、方程式は pi = 2*n/h に減りました。今、私は2つのコードを作りました。コード 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
誰かが理由を教えてもらえますか??