在六次机会内猜出一个五字母英文单词,已经成为许多人每天的小习惯,“第一个词猜什么最好”也总能引发讨论。它背后是实打实的数学:计数、概率和信息论。本文只把这个游戏当作切入点,讲清这三个在游戏之外同样有用的概念。例子中的词表和数字都是假设的,只为让计算简洁。
计数:五字母的"词"有多少个?
先看乘法原理:一个选择有 种方式,另一个独立选择有 种方式,两者组合就有 种。字母表有 26 个字母、允许重复时,五字母序列的每个位置都有 26 种选择。
如果五个字母必须互不相同,第一个位置有 26 种,第二个 25 种,依此类推。这就是从 26 个元素中取 5 个的排列数。
这些序列几乎都不是真正的单词。这类游戏的答案表通常只有几千个词,只占约 1188 万个序列的极小部分。正因如此游戏才玩得下去:语言本身在你第一次猜之前就排除了绝大多数可能。
再做一次计数:反馈的每一格有三种颜色(字母对且位置对、字母存在但位置不对、字母不存在)。五格共有 = 243 种颜色模式。有些模式实际上不会出现,但 243 是一次猜测最多能分出的组数。
概率:盲猜命中的机会
若剩下 N 个等可能的候选词,随机选一个命中的概率是 1/N。200 个候选时为 1/200,即 0.5%;2 个候选时为 50%。整个游戏就是尽快缩小 N,而每次猜测都是一个把候选表按颜色模式分组的问题。
信息:为什么会出现对数
设答案是 N 个等可能选项之一。一个设计良好的是非题能把候选减半。需要多少个这样的问题?就是满足 的 ,即 。这个量的单位是比特。
200 个候选时, 约为 7.64 比特。游戏中的一次猜测不是是非题,它最多有 243 种反馈,所以理论上最多提供 ,约 7.92 比特。真实单词远达不到,但这给出了理论上限。
当一次猜测把 N 个候选分成大小为 的组时,落入第 组的概率是 。有两个指标评价猜测:
第一个很直观:你落入某组的概率与组的大小成正比,落入后剩下的正是这么多。第二个是香农熵,衡量猜测平均能”对半砍”几次。期望剩余越小、熵越大,猜测越好。
例题:比较两次猜测
假设还剩 200 个候选(假设数据)。猜测 A 把它们分成大小为 80、60、40、20 的四组;猜测 B 分成四组各 50 个。哪个更好?
- 猜测 A 的概率:各组大小除以 200。
- 猜测 A 的期望剩余:平方和除以 200。
- 猜测 B 的期望剩余。
- 猜测 A 的熵(比特,四舍五入)。
- 猜测 B 的熵:四个等大的组恰好是 2 比特。
- 结论:B 平均剩余更少、信息更多。组数相同,但均匀的分组更有价值。
验算。 A 的各组之和 80 + 60 + 40 + 20 = 200,B 为 4 × 50 = 200,没有候选遗漏。A 的概率之和 0.4 + 0.3 + 0.2 + 0.1 = 1。四组最多只能提供 = 2 比特,且只有各组相等时才达到,正是 B 的情形。B 之后还剩 50 个候选,约 5.64 比特待解,这也说明为什么一次猜不中。
常见错误
- 把序列当成单词。 26 的 5 次方数的是序列,真正决定 N 的是小得多的答案表。
- 允许重复时却用排列数。 真实单词会有重复字母,7,893,600 只适用于字母互不相同的情况。
- 以为第一次绿格越多越好。 关键是你落入的组的期望大小,而不是某一轮的运气。
- 直接取各组大小的平均。 80、60、40、20 的平均是 50,但期望是 60,因为大组更可能被落入。
- 对数底数用错。 比特对应以 2 为底;用自然对数单位变为”奈特”,除以 即可换算。
常见问题
26 个字母能组成多少个五字母组合?
作为序列有 26 的 5 次方,即 11,881,376 个;字母不重复时为 26 × 25 × 24 × 23 × 22 = 7,893,600 个。真实单词只占其中很小一部分。
一次猜测值 2 比特是什么意思?
平均而言,它像两个精心设计的是非题一样,把候选缩小到原来的四分之一。
为什么期望值要用平方和?
落入第 i 组的概率是 n_i/N,落入后剩 n_i 个候选。对所有组求 n_i/N 乘 n_i 之和,就得到平方和除以 N。
数学能保证几次内猜中吗?
一般不能,这取决于词表。数学提供的是一个选择标准:挑平均能最大程度缩小候选表的猜测。