在使用Python时,我是一个初学者,并且想要进行模拟,并使用试验估算pi。我首先针对x和y值(在0和1之间)使用重要的随机数,然后检查这些数字是否在圆内。如果是,那么我可以使用以下公式估算pi: (4 *(圈内点数/试验次数))。 我的代码附在下面。我使用的是种子,我应该得到一个3.02左右的数字,但是要得到4.00。谁能指出我出问题的地方了?
import random
random.seed(1000)
x_value = random.random()
y_value = random.random()
print(x_value)
print(y_value)
pointsInCircle= 0
numberOfTrials = 1000
for trials in range(trials):
if 1 > ((x_value ** 2) + (y_value ** 2)):
pointsInCircle = pointsInCircle + 1
else:
print("No estimation possbile")
pi = 4 * (pointsInCircle/numberOfTrials)
print(pi)
答案 0 :(得分:0)
我不确定我是否可以在没有更多信息的情况下提供完整的解决方案,但是好像pointsInCircle/numberOfTrials == 1
,因此pointsInCircle == numberOfTrials
。
也许可以使用一些打印调试来找到这两个变量的值,看看是否是问题所在。如果您有更多信息,我们很乐意为您提供进一步的帮助!
答案 1 :(得分:0)
以下两行应放在for循环内。在每条路径上,它需要有2个与前一个不同的随机数。
x_value = random.random()
y_value = random.random()
因此,代码应如下所示。
import random
random.seed(1000)
# print(x_value)
# print(y_value)
pointsInCircle= 0
numberOfTrials = 1000
for trials in range(numberOfTrials):
x_value = random.random()
y_value = random.random()
if 1 > ((x_value ** 2) + (y_value ** 2)):
pointsInCircle = pointsInCircle + 1
else:
print("No estimation possbile")
pi = 4 * (pointsInCircle/numberOfTrials)
print(pi)
哪个产生答案3.02
。