Jon*_*ero 4 python statistics pi montecarlo
我尝试了许多使用蒙特卡罗寻找π的算法.其中一个解决方案(在Python中)是这样的:
def calc_PI():
n_points = 1000000
hits = 0
for i in range(1, n_points):
x, y = uniform(0.0, 1.0), uniform(0.0, 1.0)
if (x**2 + y**2) <= 1.0:
hits += 1
print "Calc2: PI result", 4.0 * float(hits) / n_points
Run Code Online (Sandbox Code Playgroud)
可悲的是,即使有100万,精度也非常差(3.141 ......).
这是这种方法可以提供的最大精度吗?我选择蒙特卡罗的原因是它很容易在平行部分打破它.是否有另一种π算法很容易分解并计算?
Nos*_*dna 14
这是蒙特卡洛的典型例子.但是如果你试图将pi的计算分解为并行部分,为什么不使用无限系列并让每个核心取一个范围,然后在你去的时候对结果求和?
http://mathworld.wolfram.com/PiFormulas.html
您的小数误差会消失sqrt(N)/N = 1/sqrt(N),因此这是获得精确估算的非常低效的方法.此限制由测量的统计性质设定,不能打败.
你应该能够获得投掷floor(log_10(N))/2-1精确度的数字N.也许-2只是为了安全......
即便如此,它假设您使用的是真正的RNG或足够好的PRNG.