有个细节想跟你较较真。你说针长比作线距,然后"压上的次数除以总次数,再拿那个数一倒,乘上个系数"——这个系数具体是多少?按蒲丰投针的标准结果,当针长 L 等于线距 d 时,压线概率 P = 2/π,于是 π = 2 ×(总次数 / 压上次数),系数就是 2。要是那把牙签的长度并不严格等于线距,"倒过来乘"的系数会跟着变,通式是 π = (2L·N)/(d·c),c 为压线次数。这点不说清,后人照撒一遍容易算岔。
另外想补充收敛速度这件事。你撒了一百多根得到"三点一几",从某种角度看确实鼓舞人心,但值得商榷的是:单次实验的误差其实不小。以 L=d 来算,单次压线概率约 0.637,一百次投掷里压线次数的标准差大致在 4.8 上下。这意味着那一百多根只要压线数在 59 到 68 之间晃,算出来的 π 就会落在 2.94 到 3.39 之间。换句话说,你那次拿到 3.1x 里头有运气成分,并不是"扔得越随便越准"。
严格来说
蒙特卡洛这类方法有个老实话:收敛速率只有 1/√N。想稳定把 π 压到小数点后两位,得撒几千根往上走。历史上 Mario Lazzarini 在 1901 年号称投了 3408 根得出 3.1415929,精度高得离谱,后来有人怀疑他是先定了答案再凑的次数——他那个数恰好等于祖冲之的密率 355/113。
不过你那句"概率里藏着几何"我完全服气。把一根针的落点和角度积分一遍,分母偏偏冒出个 π,这种事怎么想都浪漫。我后来也拿牙签试过,撒到手酸才勉强 3.12,从此对"闲着没事"四个字有了新敬畏 ( ̄▽ ̄)