蒙特卡洛求 π
纯粹的随机能算出一个精确的数吗?在正方形里画一个圆,然后随机向它投飞镖。圆占正方形面积的 π/4,所以大约 π/4 的飞镖会落在圆内。把这个比例乘以四,就得到 π 的估计值。飞镖越多,结果越接近:3,然后 3.1,然后 3.14,然后 3.141… 按“开始”,飞镖会随机落在正方形里。落在圆内的比例是 π/4,所以 π ≈ 4 × 圆内 ÷ 飞镖数。飞镖越多,估计越准:飞镖数增加到一百倍,大约能多得一位正确数字。点击正方形可以手动投一支飞镖。
它是如何运作的
- 按“开始”。飞镖随机落在正方形里:圆内为蓝色,圆外为红色。
- 观察计数器:π ≈ 4 × 圆内 ÷ 飞镖数。已经与 π 相符的数字会以彩色显示。
- 调高速度,或一次投出一百万支飞镖,看估计值如何稳定在图表上越来越窄的带状区域内。
飞镖为什么能找到 π
正方形的边长为 2,里面的圆半径为 1。正方形的面积是 4,圆的面积是 π × 1² = π。一支飞镖如果落在正方形内任何位置的可能性都相同,那么它落在圆内的概率就是 π/4,约为 78.5%。数一数飞镖总数和命中数,4 × 命中数 ÷ 飞镖数就是 π 的估计值。四分之一圆也是同样的道理:在边长为 1 的正方形中,半径为 1 的四分之一圆同样占它面积的 π/4。
大数定律
一支飞镖什么也说明不了:结果不是 4 就是 0。一百支飞镖得到的大概是 3.0 或 3.3 这样的值。一万支飞镖的结果通常只与 π 相差零点零几。大数定律告诉我们,随着飞镖数增加,命中比例会越来越接近 π/4,因此估计值收敛于 π。
为什么收敛得很慢
投 N 支飞镖后的典型误差约为 1.64/√N。要把误差减半,需要四倍的飞镖;要多一位正确数字,则需要一百倍的飞镖。图表中的阴影带包含所有模拟的 95%,并按 1/√N 的规律变窄。一百万支飞镖留下的误差约为 0.0016:小数点后三到四位正确。
蒙特卡洛方法
这种方法以摩纳哥的赌场命名。20 世纪 40 年代,斯坦尼斯拉夫·乌拉姆和约翰·冯·诺依曼用随机抽样追踪中子穿过物质的过程,这个问题复杂到无法用公式解决。如今,蒙特卡洛模拟被用来为金融期权定价、渲染动画电影中的光线、预报天气以及测试药物。向圆投飞镖是这一思想最简单的例子:用大量随机实验代替一次困难的计算。
常见问题
随机飞镖怎么能算出 π?
圆占它外面正方形面积的 π/4。当飞镖均匀随机地落下时,大约 π/4 的飞镖会命中圆,所以命中比例的四倍就是 π 的估计值。
要得到 3.14 需要多少支飞镖?
通常需要几万支。误差按 1.64/√N 缩小:1 万支飞镖的误差通常约为 0.016,100 万支飞镖约为 0.0016。每多一位正确数字,就要多投一百倍的飞镖。
这和布丰投针一样吗?
两者都用随机来估算 π。布丰投针是把针投到平行线上并数相交次数;蒙特卡洛方法则是向圆投点。飞镖更容易理解,收敛也更快:投掷次数相同时,误差约为布丰半长针实验的三分之一。
飞镖真的是随机的吗?
它们来自浏览器的伪随机数生成器,对这个实验来说绰绰有余。每次模拟都不一样,所以估计值在稳定下来之前会来回游走。
会上传任何内容吗?
不会。所有计算和绘制都在浏览器中的画布上完成。“保存”会下载一张 PNG。“编辑”会在 PictorX 编辑器中打开这张图片。
准备好尝试了吗?
在浏览器中打开 PictorX — 无需安装,无需信用卡即可启动。
前往编辑器