【发布时间】:2013-08-17 05:37:59
【问题描述】:
我试图通过使用随机性代替概率的简单方式来创建 Buffoon 的针实验。 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。这与布冯的针无关。