我试着用数学的方法演示montecarlo方法,但我总是得到0。
我已经试过把sci= sci+1
import random
import math
import time
print("generando")
sci=0
for i in range(30):
x = random.random()
y = random.random()
if (x<x*x)and(y<=y*y) :#probably imposible to reach(?)
sci += 1 #probably the error
time.sleep(0.001)
scu=i
r=(4*sci)/scu它实际上需要给出一个接近π的数字,当你在for中增加范围时,它会更精确。
发布于 2019-02-01 13:36:11
文档 for random.random
返回范围内的下一个随机浮点数[0.0,1.0]。
这个范围内的数字x是大于其本身平方的,也就是说,正如您正确猜测的那样,x <= x*x永远不会被满足。
一个图表来说明这一点:

这很可能是你的错。解决此问题的正确公式是:
x*x + y*y <= 1.0 # random point falls within unit circlehttps://stackoverflow.com/questions/54480592
复制相似问题