CurvG
登录

第 9 个 · 概率 · 几何

往画着平行线的地板上随手扔针,为什么能算出 π?

针和线距一样长时,大约 63.66% 的针会压到线,这个比例正好是 2/π。扔得越多估得越准,但慢得出奇。把针弯成面条、再弯成圆环,就能看出 π 是从哪里来的。

为什么?

讲解

针的平均压线次数只和长度成正比,与形状无关;直径等于线距的圆环每次恰好压线 2 次,周长却是 π 倍直径,所以比例里出现了 π。随机实验能估出 π,但误差只按 1/√N 缩小:多准一位,要多扔 100 倍。

01压线的概率

设线距为 dd,针长 l≤dl\le d。一根针由两个数决定:针的中点到最近一条线的距离 yy(在 00 到 d/2d/2 之间均匀)和针与线的夹角 θ\theta(在 00 到 π\pi 之间均匀)。针压线当且仅当

y≤l2sin⁡θy\le\frac{l}{2}\sin\theta

把所有可能的 (θ,y)(\theta,y) 画成一个长方形,压线的部分是一条正弦曲线下面的面积:

P=∫0πl2sin⁡θ dθπ⋅d2=2lπdP=\frac{\displaystyle\int_0^\pi\frac{l}{2}\sin\theta\,d\theta}{\pi\cdot\frac{d}{2}}=\frac{2l}{\pi d}

l=dl=d 时 P=2/π≈63.66%P=2/\pi\approx63.66\%。π 来自对角度的平均。

02为什么估得这么慢

扔 NN 根、压线 CC 根,估计 π^=2lNdC\hat\pi=\dfrac{2lN}{dC}。CC 是二项分布,相对波动约为 1/N1/\sqrt N 量级。l=dl=d 时,估计值的标准差约为

σ≈2.37N\sigma\approx\frac{2.37}{\sqrt N}

一万根针时约 0.024,两个标准差约 0.05,所以通常只准到一位小数。想准到 0.001,要扔两千万根以上。这就是蒙特卡罗方法的特点:什么问题都能估,但每多一位都贵 100 倍。

03布丰的面条

把针分成很多小段,每一小段压线的期望次数只和它的长度成正比(方向是随机的),而期望可以相加。所以任何形状的"面条",平均压线次数都是

E[压线次数]=k⋅LE[\text{压线次数}]=k\cdot L

kk 是同一个常数。直径为 dd 的圆环,不论落在哪里都恰好和线相交 2 次,周长 L=πdL=\pi d,于是 2=kπd2=k\pi d,k=2πdk=\dfrac{2}{\pi d}。长度为 ll 的直针最多压线一次,压线概率就是 2lπd\dfrac{2l}{\pi d}。不用积分,π 从圆的周长里来。

04拉扎里尼的好运气

1901 年,意大利数学家拉扎里尼报告:针长是线距的 5/6,扔 3408 根,压线 1808 根,

π^=2⋅56⋅34081808=355113=3.1415929…\hat\pi=\frac{2\cdot\frac56\cdot3408}{1808}=\frac{355}{113}=3.1415929\ldots

只差 0.0000003。按上面的误差,3408 根针的标准差约 0.05,准到这个程度本该几乎不可能。

关键在于:要得到 355113\frac{355}{113},扔的针数必须是 213 的倍数(3408 = 16 × 213),压线数也必须正好对上。扔 3408 根时恰好压线 1808 根的概率约 1.4%;如果边扔边看、在合适的时候停下,或者干脆凑数,就容易得多。统计学家常拿它当"挑选停止时机"的例子。

常见问题

针比线距长怎么办?

那一根针可能同时压两条线,"压线的概率"公式就不再是 $2l/(\pi d)$。但"平均压线次数 = $2l/(\pi d)$"仍然成立(面条的论证不要求 $l\le d$),数压线次数而不是压线根数,照样能估 π。画板上只让针长在线距以内。

画板上的针是真的随机吗?

每根针的位置和角度由"种子 + 编号"的哈希决定。自由模式每次清空换一个种子;故事用固定种子,所以每次播放一模一样,一万根针总是得到 3.1546。在这里,它们和真随机看不出区别。

有没有更快估 π 的随机方法?

往正方形里随机撒点、数落在内切圆里的比例(π/4),误差同样按 $1/\sqrt N$ 缩小,只是常数小一些。所有这类"扔骰子"的方法都受同一个 $1/\sqrt N$ 限制;真要算 π,用的是收敛极快的级数。

课本里的这部分

相关曲线

资料: Buffon’s needle problem — Wikipedia · Buffon’s noodle — Wikipedia