18-用撒米的方法计算 π,你信吗?

小时候学数学,有个神秘又可爱的符号经常出现在题目里:π(读作“派”)。它可不是咱们吃的水果派,而是一个连接“圆”世界的大明星——圆周率。
简单来说,如果你拿一根线把一个圆的边缘绕一圈,然后和这个圆的直径比一比,这个比值就是 π。不管你画的大圆、小圆、手画的还是印刷的,这个比值神奇地永远差不多等于3.14多点。而这个神秘数字,也让古今中外的数学家们挠破了头。

在中国的历史里,早在1500多年前,就有一位超级数学天才登场——祖冲之。他用了特别复杂的方法,算出了 π 的前七位小数,这在当时简直是“数学界的登月”,而他的记录,保持了800年之久!
但问题来了,祖冲之用的方法叫“割圆术”,操作极其复杂,不是咱们动动脑筋就能搞定的。不过别担心,咱们还有“现代魔法”——用编程的脑子、实验的思路,再配上一把大米,居然也能估出 π!
1. 用大米当尺子,听起来是不是很疯狂?

想象一下,你的手机屏幕上有一个龙的图案。你想知道这只可爱的龙占了多少屏幕面积,却发现它身上的曲线太复杂,根本没办法用“小学”学过的“底乘高除以二”那一套来算。(省字版:也就是没有现成的公式来实现计算。)
怎么办?咱们换个思路。
你闭上眼睛,随手撒下一些大米,撒得足够均匀。撒完后,仔细数一数:有多少米粒落在龙上?又有多少撒在整个屏幕上?假如龙区域的米粒占了总数的1/4,那是不是可以说,龙的面积也大概就是屏幕的1/4?而手机屏幕的形状是规则的,我们只需要查一下手机厂商的官方数据,就可以知道面积了——这样一来龙的面积也就知道了。
你可能还会觉得一颗一颗数米粒太麻烦了,那还可以用我们前面教的编程思维再做一次转换,不算米粒的数量,而是算重量。米粒越多当然就越重。拿个电子秤,称一下屏幕上全部米粒的重量,再称一下龙区域那部分米的重量,两个重量一比较,也能算出来龙的面积。

是不是有点听蒙了?别着急,我再带你看一个更简单的情况。想象一下,如果一张纸上有两个圆圈,一大一小,我们闭上眼睛往纸上撒一把大米,肯定是撒到大圆圈里的比较多对吧?
假如大圆和小圆的面积之比是2:1,只要你撒的米粒足够多、足够均匀,那么这两个圆圈里米粒的数量也会是2:1,对吧。你看,这样我们就把图形的面积转化成米粒的数量了。这个例子理解了,那上面比例、重量方法都能理解了。
怎么样,很神奇吧!不需要使用公式,拿一把大米,就算出了熊猫的面积。以后做数学的时候,是不是也可以随身带一包大米了呢?
2. 这个魔法方法有个名字

前面说的方法,其实有个正式的名字,叫做:蒙特卡洛法。
听起来像哪个大魔术师的名字?其实它不是人的名字,而是欧洲的一个赌城——蒙特卡洛。为什么一个正经算法,会和赌博扯上关系呢?这背后还有个传奇故事。(省字版:赌博不是什么好事!)
20世纪40年代,美国科学家在搞一个超级工程——制造氢弹。但中途遇到了一个天大的数学难题,这个数学难题没有现成的公式可以套用。算不出来这个数学题,氢弹就造不出来了。

这时候,一位叫乌拉姆的数学家,想到一个好主意。突然就想:能不能算一下,自己拿到一手特殊的牌面的概率呢。如果要用公式来硬算,肯定会特别特别难。于是他就换了个思路,既然硬算算不出来,我不如用计算机模拟抓牌1万次,然后数一数其中有多少次拿到了这种特殊的牌面,不就行了吗?
在打牌时灵机一动:我想知道某种特殊牌型出现的几率,如果用公式算太麻烦,干脆用计算机模拟一万次随机发牌,看结果出现了多少次,不就得出概率了吗?
有没有感觉到什么?——这个思路就跟前面我说的,用撒米的方法算面积是一样的,就是用模拟实验,来替代数学计算,求得结果。制造氢弹的那个计算,也可以使用这样的方法。
诶,这个主意很棒啊!

于是,乌拉姆就赶紧跑过去跟另一位数学家冯·诺依曼说了他的灵感。冯·诺依曼是当时世界上计算机玩得最溜的人之一,美国第一台电子计算机能制造出来,就离不开冯·诺依曼的研究。
听到乌拉姆的建议,冯·诺依曼赶紧在计算机上编好了程序,问题果然解决了,氢弹也顺利制造出来了。
这个方法这么厉害,该起个什么名字呢?有一位数学家就说:干脆起名叫蒙特卡洛吧。这种方法本身就是受到牌局的启发而想出来的,它也会模拟各种各样的情况,乍一看跟翻来覆去投注赌博差不多。用蒙特卡洛这个赌城的名字来命名,多合适啊。
然后,它就真的叫这个名字了。听起来有点随便,也有些不光彩是不是呀?但那也没办法,现在大家都这么叫,改都没法改了。
从此,这种“靠大量随机模拟来找出答案”的方法,就有了个名字——蒙特卡洛法。
3. 那 π 跟这有啥关系呢?
不管怎样,咱们现在有了蒙特卡洛算法这么厉害的工具了,那它又是怎么计算 π 的值呢?
好问题!我们回到刚才撒米的实验,再换一个“圆中画方”的套路。

聪明的你可能已经想到了:你拿一张正方形纸,画个刚好能套在里面的圆。然后撒米粒,随便撒,越多越好。撒完后,分别数一下,落在圆里的有多少,落在整个正方形里的有多少。你就能知道圆的面积大约是多少。
因为你知道正方形的边长,也知道它的面积,还知道圆的直径是一样长……一个简单的除法,就能算出 π 的值啦!
这个过程就是一个用实验来估算数学常数的超有趣方法。也许你估不出 π 的几百位小数,但前几位大概率是靠谱的。而且,只用一堆米就能做到,是不是很酷?
4. 小结:撒米不止是饭前仪式,它是计算的魔术棒!
你可能没想到,祖冲之、冯·诺依曼和你这颗看起来普普通通的大米,居然都能在圆周率的问题上碰头!这就是科学的魅力。
记住这个神奇的思路:模拟替代计算、实验替代公式,这也是编程思维的一种。也许将来有一天,你写的程序,能解决一些大人们都搞不定的事——就像当年的那些科学家一样。
省字版:蒙特卡洛算法就是“用大量随机尝试,逼近正确答案”的一种方法,越多尝试,越接近真相。
应用场景:
- 估算圆周率 π(比如“撒米粒”的方法)
- 计算复杂积分
- 金融风险评估
- 游戏 AI 走棋(比如围棋中的 MCTS,蒙特卡洛树搜索)
- 模拟粒子轨迹、核反应、天气系统……
更新日志
ff458
-于87164
-于38417
-于da795
-于51d62
-于62fac
-于e625e
-于828e1
-于8d340
-于1c35a
-于aed17
-于f14b0
-于e6ce4
-于69882
-于772c4
-于e6a0f
-于cbb3a
-于610fe
-于f08aa
-于76989
-于86c50
-于027da
-于