You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

蒙特卡洛法近似π:539354个点精度超预期,求排查

蒙特卡洛法估算π的精度问题分析

代码正确性验证

你的Python代码逻辑完全正确:

  • 核心逻辑通过生成[0,1)范围内的随机点,统计落入单位四分之一圆内的点数占比,再乘以4得到π的近似值,完全符合蒙特卡洛法的原理。
  • simulX函数未被调用,不影响最终计算结果。
  • 1000次测试取平均偏差的计算方式合理,能准确反映近似值的整体误差水平。

精度与样本量的关系

你之前对所需点数的估计有误,根源是对蒙特卡洛法的误差特性理解偏差:蒙特卡洛法的误差阶数是O(1/√n)(而非O(1/n)),具体推导如下:

  1. 设单次试验中点落入四分之一圆的概率为( p = \pi/4 ),则统计落入圆内的点数( S_n )服从二项分布( B(n, p) ),其方差为( Var(S_n) = n p (1-p) )。
  2. π的近似值( P_n = 4 S_n / n ),其方差为:
    [
    Var(P_n) = 16 \cdot \frac{Var(S_n)}{n^2} = \frac{16 p (1-p)}{n} = \frac{\pi(4-\pi)}{n} \approx \frac{2.7}{n}
    ]
  3. 标准差( \sigma = \sqrt{Var(P_n)} \approx \sqrt{\frac{2.7}{n}} )。若要标准差小于( 10^{-2} ),代入计算得:
    [
    \sqrt{\frac{2.7}{n}} < 0.01 \implies n > \frac{2.7}{0.0001} = 27000
    ]
    仅需27000个点就能达到( 10^{-2} )级别的精度,你使用的539354个点远大于这个数值,因此平均偏差远小于( 10^{-2} )是完全正常的。

总结

  • 代码无错误,计算逻辑正确。
  • 达到百分之一精度所需的点数远少于你之前的估计,这是由蒙特卡洛法“误差与样本量的平方根成反比”的特性决定的。

内容的提问来源于stack exchange,提问作者Lapin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 03:52:20