蒙特卡洛求 π:撒点估算圆周率
在 1×1 正方形里随机撒点,落在四分之一圆内的比例 ≈ π/4,所以 π ≈ 4×(圆内点数/总点数)。点"撒 500 点",看估计值怎么随点数增多逼近 3.14。
import randomtotal = 500inside = 0for _ in range(total): x, y = random.random(), random.random() if x**2 + y**2 <= 1: inside += 1pi = 4 * inside / totalprint(f"总点数 {total},圆内 {inside},π ≈ 4×{inside}/{total} = {pi:.4f} (真值 3.1416,点越多越准)")
我们常用以上代码作为Python中random库的经典案例,可如果你仔细观察这段动画,你就会发现:用 random 库估算出来的 π 不仅不准确,甚至还相差甚多;Python 的 random 模块,底层跑的是一个叫"梅森旋转"的数学公式。
它的逻辑非常简单:喂进去一个种子,吐出来一串数字。
种子一样,吐出来的数字就一模一样——不管你换哪台电脑、跑多少次,结果永远不变。
而真随机的核心特征恰恰是不可复现、不可预测。
所以 random 生成的随机数,本质上就是一串"看起来很乱、实则完全确定"的数字。它只是"伪装"成了随机,并不是真正的随机。
我们常说的随机,基本上都是这样的 “伪随机”。
下次抽卡如果又是大保底,或许你可以想想,它真的是随机吗?
也许只有你所处的现实生活,才是真正的随机。