python - 使用蒙特卡洛查找 PI 数字

标签 python statistics montecarlo pi

我已经尝试过许多使用蒙特卡洛寻找 π 的算法。 解决方案之一(在 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 的计算分解为多个并行部分,为什么不使用无限级数并让每个核心取一个范围,然后边计算结果边求和?

http://mathworld.wolfram.com/PiFormulas.html

关于python - 使用蒙特卡洛查找 PI 数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/982381/

相关文章:

python - 如何处理 Python 中的大内存占用?

python - 计算大量/不精确数据量统计信息的有效方法

c++ - 多线程蒙特卡洛计算没有加速

algorithm - 棋盘游戏中的蒙特卡洛树搜索 - 如何实现对手的 Action

python - 如何计算python输出的均值、众数、方差、标准差等?

python - 在 pyspark 中处理大数字的数据类型

python - 如何在python中不同的两个数组上应用不同的运算符

python - 使用 scipy.stats.beta.fit 时的运行时警告

image-processing - 什么是图像的熵以及它是如何计算的?

python拦截日志记录到电子邮件或短信