在python中运行试验

时间:2019-03-05 19:59:54

标签: python

在使用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)

2 个答案:

答案 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