1946 年,洛斯阿拉莫斯。数学家乌拉姆在病中玩纸牌接龙消磨时间,忽然琢磨:这局能接通的概率是多少?组合数学算起来是个天文数字的分支树,根本算不动。他换了个思路:何必算?摆一百局、一千局,数赢了几局不就行了。他把这想法告诉了冯·诺依曼,两人立刻意识到这不只是纸牌技巧——刚造出来的电子计算机,正好能干「重复一千局」这种事。Metropolis 给这个方法起了个风骚的名字:蒙特卡洛——因为乌拉姆有个叔叔爱去蒙特卡洛赌场。它的第一个正经任务,是算原子弹里的中子扩散。
思路一句话就能说完:算不出的答案,只要它能写成「某个随机事件的平均值」,就用大量随机采样去逼近它。这一章看这台「随机算盘」怎么打。
第一笔账:往圆里扔飞镖算 π
画一个边长 2 的正方形,里面内切一个半径 1 的圆。闭眼往里扔飞镖(均匀随机地扔):落在圆里的概率 = 圆面积 / 正方形面积 = π/4。扔一万镖,数圆里的比例,乘以 4,就是 π 的估计值。扔得越多越准——第四章的大数定律在给你打工。
注意这里发生了什么魔术:π 是一个确定的数,跟随机八竿子打不着;我们却用随机的方法把它算了出来。这就是蒙特卡洛的灵魂——把确定的问题改写成随机变量的期望,然后采样。面积、体积、积分,全是「期望」的马甲。
为什么不用尺子量:维数灾难与免费通行证
算面积有更「正常」的办法:把正方形切成一亿个小格子,数圆盖住了几格。二维时这很好。但现代工程里的「面积」常常长在几百维的空间里——一个期权的价格取决于几十上百个随机因子,一个蛋白质的形状是几千个坐标。网格法在 d 维里要 N^d 个点,维度一高,格子数爆炸到宇宙原子都不够填。这叫「维数灾难」。
蒙特卡洛在这里拿到了一张免费通行证:它的误差只取决于采样次数,跟维度无关——不管几维,误差永远按 1/√n 缩小(第五章的 √n 税,老朋友了)。扔一百万个点,误差大约千分之一,二维如此,一千维也如此。网格法在高维里指数爆炸,蒙特卡洛在高维里闲庭信步。这就是现代金融定价、核反应堆设计、图形渲染全押注蒙特卡洛的原因:不是它多优雅,是高维世界里只有它还走得动。
大白话:维数灾难是「地毯式搜查」在高维的破产——房间太多,警察不够用。蒙特卡洛改成「随机抽查」:不管房间多少,抽查一千间的把握都一样。牺牲精度换可行性,是高维世界里唯一的活路。
随机算盘打到了哪
今天的蒙特卡洛无处不在,举三个不同量级的:
- 核物理与医学:中子在反应堆里的每一次碰撞、散射、吸收都是带概率的事件——直接模拟亿万条「随机游走轨迹」(第七章),统计出链式反应的全貌。放疗剂量计算同理:光子在你身体里的散射路径也是模拟出来的。
- 金融:一个复杂衍生品的价格 = 「在成千上万条可能的未来市场路径上的平均收益」。于是每晚,投行让随机数在假想市场里跑几十万条平行未来,取平均。
- 人工智能:AlphaGo 的决策核心是「蒙特卡洛树搜索」——棋盘上算不动的局面,就随机模拟几千盘「下完这步之后随便走」的棋,数哪步赢得多。当年它赢李世石的那几步「神之一手」,相当一部分是随机模拟数出来的。
还有个进阶版值得一提:当「均匀抽查」效率太低时(比如要在天文数字的分子构象里找低能量的那些),就用 MCMC(马尔可夫链蒙特卡洛)——大白话讲,让采样点做一场「偏好低处」的随机游走,在重要的区域多待、不重要的少来。贝叶斯统计、大模型的许多训练技巧、乃至选举预测模型,跑的都是它。
两条行规
蒙特卡洛用多了,会记住两条行规。一,结果是估计,带误差棒:报蒙特卡洛的结果必须报「±多少」,误差按 1/√n 缩——想把误差砍十倍,采样量加一百倍,没有捷径。二,伪随机要验货:第八章 RANDU 的 15 个平面就是蒙特卡洛史上最大的事故——随机源有结构,模拟就把结构当物理。
到这里,随机从「麻烦」彻底变成了「资产」。下一章看它最金贵的用途:密码学。在那里,随机不只是工具,是命根子——密钥的全部强度,就是随机数发生器的强度。