布丰投针的名气,大半来自那个断言:随便往画满平行线的纸上丢针,交点频率里藏着 π。第 003 讲已经算过 l<d 的经典情形,这一讲把它推到一般局面——针比间距还长时怎么办?答案是三段弧线拼出来的一条统一公式。而公式背后那套「用随机估算确定」的思想,比公式本身走得更远。
从一个问题开始
上一讲(第 003 讲)留下了一个伏笔:投针的成功概率是
P=πd2l,
其中 l 是针长、d 是平行线间距。这个公式干净、漂亮,还能反推出 π——取 l=d,则 P=π2,量一下频率就能估 π。
但它有一个没被明说的前提:针必须比间距短(l<d)。
如果针比间距还长呢?一根两米的针往一米的网格上丢,它必然跨过某条线——概率应该趋近于 1,公式也该跟着变形。这一讲就干这件事。
示意图

图:以针中点距最近线的距离 $x$ 与倾角 $\theta$ 为轴,跨线的临界点在三种区间里各有一段
核心:把问题放在 (x,θ) 平面上
设平行线沿水平方向、间距为 d。针的长度是 l。投针的结果由两个量决定:
- x:针中点到下方最近那条线的垂直距离,取值范围 0≤x≤2d;
- θ:针与水平方向的夹角,由对称性只需考虑 0≤θ≤2π。
针的两个端点到最近线的垂距是
x±2lsinθ.
只要下端垂距为负、上端垂距为正,针就跨过了一条线。 换句话说,跨线的条件是
x≤2lsinθ.
这就是全部的几何。剩下的都是在这块长方形上算面积。
深入理解
一、l<d:经典情形
当 l<d,沿整个 θ 区间都有 2lsinθ≤2l<2d,所以临界线整段都落在长方形内部。跨线区域是一条正弦曲线下方的面积
∫0π/22lsinθdθ=2l.
总面积是 2d×2π=4πd。二者相除
P=πd/4l/2=πd2l,
正是第 003 讲的公式。
二、l=d:边界上发生了什么
当 l=d,临界线
x=2dsinθ
恰好经过长方形的右上角 (2π,2d)。曲线整段仍在长方形内,公式依旧成立:
P=π2≈0.6366.
针长等于间距时,交点概率是 π2——一个不带任何参数的干净常数。这也是用投针估 π 最省事的选法。
三、l>d:撞到顶之后必须分两段
当 l>d,2lsinθ 在 θ 较大时会超过 2d。这时「临界线被顶到天花板以上」,那部分区域里整个 x 范围都跨线(因为再短的垂距也跨过去了)。
设临界角 θ0 满足
2lsinθ0=2d,即sinθ0=ld.
于是跨线区分成两块:
第一块(θ≤θ0):正弦曲线仍在天花板以下,面积为
∫0θ02lsinθdθ=2l(1−cosθ0).
第二块(θ0<θ≤2π):整个竖条都跨线,高度恒为 2d,面积为
2d(2π−θ0).
两块相加再除以总面积 4πd,得
P=πd2l(1−cosθ0)+π2(2π−θ0),sinθ0=ld.
验证它退化为经典公式:当 l→d−,有 θ0→2π,cosθ0→0,第二项 →0,于是 P→πd2l ✓
四、一条统一公式把三种情形收拢
上面分了三段讨论,其实可以写成一条。令 θ0=arcsin(min(1,ld)),则
P=πd2l(1−cosθ0)+π2(2π−θ0)
对 l<d、l=d、l>d 全部成立。
数值验证(取 d=2):
| l | l/d | 统一公式 | 分段公式 | Monte Carlo(20 万次) |
|---|
| 0.5 | 0.25 | 0.159155 | 0.159155 | 0.158894 |
| 1 | 0.50 | 0.318310 | 0.318310 | 0.318105 |
| 2 | 1.00 | 0.636620 | 0.636620 | 0.636356 |
| 4 | 2.00 | 0.837248 | 0.837248 | 0.837457 |
| 6 | 3.00 | 0.892880 | 0.892880 | 0.893022 |
三种方法在第四位小数上对齐。一根针长短变化,概率从 0.16 爬到 0.89,但它始终可以用同一条式子和同一个 θ0 表达。
五、拿它估 π
取 l=d=1,则 P=π2,于是
π=P2.
一次 Monte Carlo 实验:投针 50 万次,记录跨线频率
P^=0.637192,π^=P^2=3.13877.
真值 π=3.14159,误差 0.0028。
慢得让人着急,但慢得有理由。Monte Carlo 的收敛速度是 n1——样本量翻一百倍,误差才降到十分之一。想靠丢针把 π 算到十位,得丢 1020 次。它的价值从来不是精度,是「不需要解析解」:只要能在计算机里模拟那个随机过程,就能估任何一个难算的量。
在高中数学体系里的位置
定积分的最早样态。 本题算的是正弦曲线下的面积,方式却是「数点子」——这正是定积分思想的雏形。课堂上可以先让学生用数格子的办法估曲线下面积,再引出 ∫ 记号,衔接极顺。
参数讨论与分段函数。 l<d、l=d、l>d 三种情形的公式不同,但极限处连续。这是「分段讨论 + 边界连续」的标准训练,也是微积分里处处可用的思维方式。
建模与假设。 模型假设「中点均匀落在线间」「倾角均匀分布在 [0,π)」「针足够细」。让学生挑出哪条假设最强、现实中最容易破,比算题更锻炼判断。
随机算法的入口。 Monte Carlo 是本世纪最重要的算法族之一。它的老祖宗就是这个投针实验——用随机估算确定,这个念头第一次被写下来是在 1777 年。
思考与拓展
-
复算经典公式:按第一块面积的算法自己推一遍 P=πd2l,并验证 l=1,d=2 时 P=π1。
-
验证退化:把统一公式用到 l=d=2,说明为什么它给出 π2。再用 l=0.5 试,看是否等于经典公式。
-
估 π:自己写一个模拟程序,投针 10 万次估 π。多跑五组,记录五次的误差,看看它们是否总在同一侧。
-
收敛慢的问题:Monte Carlo 的误差与 n1 成正比。若要把 π 估到小数点后三位,大概需要投多少次针?(提示:粗略解 1.2/n<0.001。)
-
找一处假设攻击它:若针是刚性的、有粗细,模型要在哪一步修正?若平行线画得不等距呢?
-
Monte Carlo 还能估什么:查一个用 Monte Carlo 估算的现代例子(比如高维积分、期权定价、渲染光线追踪),说明它为什么在那个场合不可替代。
一句话总结
一根针、一块布满平行线的纸,跨线频率里藏着 π;把针换长,同一套面积法推出一条统一公式——而公式背后那套「用随机估算确定」的思想,比公式本身走得更远。
— Y. · 2026-11-02