蒙特卡洛估算圆周率

通过随机投点模拟,用概率统计方法估算圆周率 π,Canvas 实时可视化收敛过程

蒙特卡洛模拟器

在正方形内随机投点,统计落入内切圆的比例估算 π ≈ 4 × M / N

π 估算值
0.000000
误差(与 Math.PI)
总投点数 N
0
圆内点数 M
0
圆内点(绿色) | 圆外点(红色) 正方形边长 2R,内切圆半径 R
参考值(Math.PI)
3.14159265...
公式:π ≈ 4 × M / N
π 收敛曲线
横轴:投点数 N,纵轴:π 估算值(绿色为真实 π 参考线)
广告位

蒙特卡洛方法数学原理

蒙特卡洛方法(Monte Carlo Method)是一种基于随机采样的数值计算方法。估算 π 的基本思路如下:

在边长为 2R 的正方形内随机投点,正方形面积 = (2R)² = 4R²
其内切圆半径为 R,圆面积 = π × R²
点落入圆内的概率 = 圆面积 / 正方形面积 = πR² / 4R² = π / 4
因此:π = 4 × (圆内点数 M) / (总点数 N)

当投点数 N 越大时,根据大数定律,估算值越接近真实 π 值。本工具每次投点都从 [-R, R] × [-R, R] 的均匀分布中抽取 (x, y),判断 x² + y² ≤ R² 是否成立,若成立则计入圆内点 M。

收敛特点
蒙特卡洛方法的误差以 O(1/√N) 的速度收敛,即每增加 100 倍投点数,精度提升约 1 位小数。例如 1 万点精度约 2 位,100 万点精度约 3 位,1 亿点精度约 4 位。

使用说明

  • 点击"开始"按钮启动投点模拟,画布上将实时绘制随机点
  • 选择投点速度:1/10/100/1000 点每帧,速度越快收敛越快
  • 拖动半径滑块调整圆半径 R,观察对估算精度的影响
  • 实时查看 π 估算值、误差、总点数、圆内点数
  • 底部收敛曲线展示 π 估算值随投点数增加的收敛趋势
  • 点击"重置"清空画布与统计重新开始模拟

适用场景与保障

  • 教学演示:直观展示蒙特卡洛方法的原理与收敛性
  • 概率学习:理解大数定律与随机模拟的思想
  • 数值实验:研究投点数量与估算精度的关系
  • 本地运行:所有计算在浏览器本地完成,无需后端
  • 免费使用:无需注册,打开即用

常见问题

为什么估算值会上下波动?

蒙特卡洛方法基于随机采样,每次投点都是独立随机事件。当点数较少时,圆内外点比例会有较大随机波动;随着点数增加,根据大数定律,估算值会逐渐稳定并趋近真实 π。这是该方法固有的统计特性。

改变半径 R 会影响估算精度吗?

理论上,π 的估算公式 π ≈ 4M/N 与 R 无关,因为无论 R 多大,圆与正方形面积比都是 π/4。但实践中,R 太小会导致画布坐标精度不足(每个像素代表更大空间),R 太大则可能超出画布边界,因此推荐使用中等大小(150-220)的半径以获得稳定的视觉效果。

需要投多少点才能得到准确的 π?

蒙特卡洛方法收敛速度较慢,误差按 O(1/√N) 减小。约 1 万点可获得 2 位小数精度(3.14),100 万点约 3 位(3.142),1 亿点约 4 位(3.1416)。若需要更高精度,建议使用数值方法如 Chudnovsky 算法等。

"淡化旧点"选项有什么作用?

开启"淡化旧点"后,画布上的点会随时间逐渐淡化,营造动态流动效果,便于观察最新投点位置。关闭则所有点保持原始亮度,便于查看完整分布。该选项仅影响视觉效果,不影响 π 估算结果。