我已经尝试过许多使用蒙特卡洛寻找 π 的算法。 解决方案之一(在 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
可悲的是,即使是 1000000000,精度也非常差(3.141...)。
这是该方法可以提供的最大精度吗? 我选择 Monte Carlo 的原因是很容易将它分解成平行部分。 有没有另一种易于拆解计算的算法?
最佳答案
这是蒙特卡洛的经典例子。但是,如果您试图将 pi 的计算分解为多个并行部分,为什么不使用无限级数并让每个核心取一个范围,然后边计算结果边求和?
关于python - 使用蒙特卡洛查找 PI 数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/982381/