∫π每天一道数学题
← 返回概率经典例读
概率经典例读 · 第 12 讲 · 2026-10-28 · 约 5 分钟

扔了二十次,出了五个正面——这台计算机没坏

让程序模拟扔二十次硬币,结果五个正面、十五个反面。看着像机器坏了。可它恰恰是最诚实的一次模拟——二十次这个数,本来就不够把 0.5 看清楚。

短期波动大,长期收敛到 0.5

短期波动大,长期收敛到 0.5

原书原文(英文)

As we have noted, our intuition suggests that the probability of obtaining a head on a single toss of a coin is 1/2. To have the computer toss a coin, we can ask it to pick a random real number in the interval [0,1][0, 1] and test to see if this number is less than 1/2. If so, we shall call the outcome heads; if not we call it tails. Another way to proceed would be to ask the computer to pick a random integer from the set {0,1}\{0, 1\}. The program CoinTosses carries out the experiment of tossing a coin nn times.

Running this program, with n=20n = 20, resulted in:

THTTTHTTTTHTTTTTHHTT.

Note that in 20 tosses, we obtained 5 heads and 15 tails. Let us toss a coin nn times, where nn is much larger than 20, and see if we obtain a proportion of heads closer to our intuitive guess of 1/2. The program CoinTosses keeps track of the number of heads. When we ran this program with n=1000n = 1000, we obtained 494 heads. When we ran it with n=10000n = 10000, we obtained 5039 heads.

We notice that when we tossed the coin 10,000 times, the proportion of heads was close to the ``true value'' .5 for obtaining a head when a coin is tossed. A mathematical model for this experiment is called Bernoulli Trials (see Chapter 3).

一行输出,一句"这机器坏了"

把一枚硬币交给计算机扔,最简单不过:让它在 [0,1][0,1] 里随机取一个实数,小于 1/21/2 算正面,否则算反面。

扔 20 次,屏幕吐出一行:

THTTTHTTTTHTTTTTHHTT

数一数正面——5 个。 反面 15 个。

这时候,几乎所有第一次看到这行输出的人都会说同一句话:"这随机数生成器有问题吧。"

五个对十五个。正面只占了四分之一。这不是明摆着偏吗?

把它改成 1000 次,得到 494 个正面——频率 0.4940.494。改成 10000 次,得到 5039 个正面——频率 0.50390.5039。

越扔越像 1/21/2。 可越扔也越贵:一万次要看一万个字符,二十次一眼就数完了。

于是有了这个值得全篇追问的问题:那 20 次扔出的 5 个正面,到底是"机器坏了",还是"二十次本来就会这样"?

这道题在问什么

先把"计算机怎么扔硬币"这件事说清楚,因为它比真硬币更值得追。

计算机没有硬币,它有的是伪随机数生成器:一个确定性的算法,吐出一串看起来无规律可言的数。你在 [0,1] 里取一个数,跟 1/21/2 比大小——这就是一次"扔硬币"。

所以本篇首先要问的是一个模仿问题:一串人造的随机数,能不能顶得上一枚真硬币?

原书的答案是能,并给了模型名字——伯努利试验(Bernoulli Trials)。独立、每次成功的概率都是 pp、反复做 nn 次。这一篇是全书第一次把这个模型立起来。

但更有意思的是它附带暴露的那个坑:同样的数据,换个次数看,结论会翻。

算一下:二十次到底"应该"出几个正面

如果硬币是公平的,p=1/2p = 1/2。扔 nn 次,正面数 XX 服从二项分布 X∼B(n,1/2)X \sim B(n, 1/2)。

它的期望是

E[X]=n⋅12.E[X] = n \cdot \frac{1}{2}.

扔 20 次,期望就是 10 个正面。我们只得到 5 个,差了一半。

差了一半,是不是就说明硬币不公平?

不是。因为期望只是个平均数,真实结果会在它附近晃动。晃多远?用标准差量:

σ=np(1−p)=20⋅12⋅12=5≈2.236.\sigma = \sqrt{n p (1-p)} = \sqrt{20 \cdot \frac{1}{2}\cdot \frac{1}{2}} = \sqrt{5} \approx 2.236.

20 次时,正面数的标准差约 2.24 个。 我们偏离期望 5 个,也就是

52.236≈2.24\frac{5}{2.236} \approx 2.24

个标准差。这个距离偏大,但在"完全正常"的范围之内——按正态近似,偏离超过 2 个标准差的概率约 4.6%4.6\%;用二项分布精确算是 4.14%4.14\%,约每二十四次出现一次。

换句话说:公平硬币扔 20 次,大约每二十四次就有一次出现这么难看的正面数。 你觉得"机器坏了",其实只是撞上了一次正常波动。

再把 nn 放大,看同一批数据:

次数 nn期望正面数标准差 n/2\sqrt{n}/2原书实际频率频率对 1/21/2 的偏离
20102.23650.2500−0.2500-0.2500
100050015.814940.4940−0.0060-0.0060
10000500050.0050390.5039+0.0039+0.0039

看最后两列:偏离从 0.250.25 掉到 0.0060.006 再到 0.00390.0039,一路在缩。 换成"占几个标准差"看更准:

次数 nn实际偏离该次的理论 σ\sigma偏离 /σ/ \sigma
200.25000.11182.24
10000.00600.01580.38
100000.00390.00500.78

第一行的 2.24 和第三行的 0.78,都在说同一件事:这是公平硬币的正常表现。 只是 20 次的"正常"恰好长得像"坏"。

为什么二十次不够——这里才是本篇的正主

把这个想透,就摸到了大数定律的门。

扔 20 次,正面频率的标准差是

σ正面数n=2.23620=0.1118.\frac{\sigma_{\text{正面数}}}{n} = \frac{2.236}{20} = 0.1118.

也就是说,只用 20 次去估 pp,你的估计值天生就在真值上下 0.110.11 的幅度里晃。

晃幅 0.110.11 是什么概念?真值是 0.50.5,晃幅 0.110.11 意味着你可能得到 0.390.39,也可能得到 0.610.61——区间宽到能同时容纳"这硬币偏正面"和"这硬币偏反面"两个结论。 我们这次的 0.250.25,不过是这个宽区间里比较极端的一端。

而扔 1000 次,晃幅变成 0.01580.0158;扔 10000 次,0.00500.0050。

晃幅∝1n.\text{晃幅} \propto \frac{1}{\sqrt{n}}.

这是本篇唯一要记住的公式。 想让人信服,多做的实验次数不是线性地多,而是要按平方倒数缩。误差减半,实验次数得翻四倍。

(上一讲 de Méré 那个例子里,原书跑 1000 局得了 48.6%48.6\%——照着它下判断会反过来说 de Méré 错了;跑 10000 局得到 51.98%51.98\%,才把方向拨正。同一个模拟,样本量差了十倍,结论反了一次。

这不是模拟的毛病,这是所有用样本说话的方法的宿命。)

在课堂上怎么办

这个例子最适合让学生亲手"冤枉"一次计算机。

先让学生自己写(或用计算器)生成 20 个随机数,数正面。把全班的结果收上来,写在黑板上——几乎一定有几个组得出 5-7 个正面,甚至有更极端的。

问一句:"这些组的生成器是坏的吗?"

一定有人喊是。这时候让他们把所有组的数据合起来算总频率——比如二十组合计 400 次、正面 202 个,0.5050.505。

同一个班、同样的生成器,分开看每组都像坏了,合起来漂亮地贴着 0.50.5。 这个反差比推导管用。

接下来让他们自己把 nn 从 20 改成 200、2000、20000 各跑一遍,把频率连成一条线。亲眼看见那条线越往右越贴地。 讲台上一句话点透:你不是在等它"变准",你是在等抖动被摊薄。

如果还有时间,可以问一个更刁的:"那要跑多少次才算够?"——这个问题没有放之四海的答案,取决于你要多准。但这正是"做实验的人必须自己定的东西"。

学生最容易栽在哪

课堂提问

  1. 原书跑 20 次得 5 个正面。如果这硬币真的公平,至少要扔到多少次,你才愿意承认它公平?先给出一个你的判据,再想这个判据靠不靠谱。
  2. 把频率的标准差 np(1−p)/n=p(1−p)/n\sqrt{np(1-p)}/n = \sqrt{p(1-p)/n} 对 nn 求导,看它随 nn 怎么变。为什么精度要提高十倍,实验次数要增加一百倍?
  3. 一颗"不公平"的硬币 p=0.55p = 0.55。要扔多少次,才能让"频率超过 1/21/2"的概率达到九成?(提示:用正态近似 B(n,p)B(n,p)。)
— Y. · 2026-10-28