生活攻略
一副牌究竟要洗到什么程度,才算“洗干净”?

一副牌看起来足够混乱,是否就意味着它不会系统性地偏向某种发牌结果?
有一次打牌,轮到我洗牌的时候,我忽然想到一个问题:我究竟要洗几次,才能算把这副牌洗干净了?
这个问题听起来像是应该有一个标准答案。洗一次显然不太够,洗上几十次又似乎没有必要。可如果不直接数次数,我们能不能定义一副牌的“混乱程度”,然后规定:超过某个标准,就算洗干净了?
我首先想到的是熵。
能不能用熵衡量一副牌有多乱?
熵常常被直观地解释为“混乱程度”。一副按点数和花色排得整整齐齐的牌,看起来很有秩序;一副肉眼找不到规律的牌,看起来更加混乱。于是很自然地会想:洗牌是不是一个不断增加熵的过程?如果熵足够高,是不是就意味着牌已经洗干净了?
真正写下定义以后,第一个区别马上出现了。
假设所有合法牌序组成集合 $\Omega$。一种洗牌方法并不只产生一个结果,而是给每个牌序 $\pi\in\Omega$ 一个出现概率 $P(\pi)$。它的Shannon熵是
\[H(P)=-\sum_{\pi\in\Omega}P(\pi)\log_2P(\pi).\]如果一种方法每次都产生同一个牌序,它的熵是0。如果54张牌的每一种排列都以相同概率出现,那么共有 $54!$ 种可能,熵达到最大值
\[H(U)=\log_2(54!)\approx237.06\text{ 比特}.\]这里的 $U$ 表示完全均匀的理想洗牌。
所以,Shannon熵严格衡量的并不是桌上那一副已经确定的牌,而是产生牌序的随机机制。一旦手里只有某个已经实现的牌序 $\pi_{\mathrm{obs}}$,仅凭这个结果,根本无法知道背后的熵是多少。
因为同一个 $\pi_{\mathrm{obs}}$,既可能来自一个每次都固定产生它的机制——熵为0;也可能来自完全均匀洗牌——熵约为237.06比特;还可能来自无数种介于两者之间的机制。一副牌本身不会告诉我,它究竟是怎样产生的。
数学上还有一些专门评价确定序列的方法。例如,可以讨论一个牌序相对于某个概率模型有多“意外”,也可以用Kolmogorov复杂度描述生成它所需的最短程序有多长。但前者仍然依赖事先选定的模型,后者一般无法被精确计算。它们并不能直接给出一个简单、唯一、可以拿来检查扑克牌的混乱指数。
于是,原来的问题需要稍微改写:我们不是给一副已经出现的牌定义Shannon熵,而是给一种事前的洗牌方法定义熵。
到这里,我似乎找到了一种答案:只要比较不同洗牌手法产生的牌序分布,看它们的熵距离最大值还有多远,就能衡量牌有没有被洗开。
但在真正接受这个答案以前,我想到了一种很简单的反例。
一个有147.60比特熵的“假洗牌”
以斗地主为例。54张牌发给三名玩家,每人17张,最后留下3张底牌。
现在设想一种人为设计的洗牌方法。在洗牌开始以前,三名玩家各自会拿到哪17张牌已经完全固定,哪3张成为底牌也已经固定。接下来,只把第一名玩家的17张牌随机放进属于他的17个发牌位置,再对第二名和第三名玩家做同样的事,最后随机排列3张底牌。
这样产生的完整牌序并不固定。假设四组牌都在各自的位置中均匀随机排列,那么这个生成器可以产生
\[(17!)^3\times3!\]种不同牌序,熵达到
\[3\log_2(17!)+\log_2(3!) \approx147.60\text{ 比特}.\]这是一个巨大的数字。连续运行这个生成器,我们几乎不可能遇到两副完全相同的牌序;从表面看,每次结果都会非常不一样。
但发完牌以后,三名玩家的手牌和三张底牌永远完全相同。对于斗地主真正使用的信息而言,这个生成器没有提供任何随机性。
令 $\Pi$ 表示完整牌序,令 $Y$ 表示三名玩家的手牌和底牌。信息论中的分解告诉我们:
\[H(\Pi)=H(Y)+H(\Pi\mid Y).\]在这个例子里,$H(Y)=0$。全部147.60比特都来自 $H(\Pi\mid Y)$:手牌已经固定以后,同一名玩家的牌还可以按照什么顺序出现。
所以问题并不是熵完全没有用,而是我们把熵算在了错误的对象上。完整牌序可以非常随机,游戏真正关心的发牌结果却完全不随机。要计算“有用的熵”,必须先说明是哪一种游戏、怎样发牌、游戏会读取牌序中的哪些信息。
这样一来,一副牌的混乱程度就不再是绝对的了。同一种牌序结构,换一种发牌方法、换一个玩家人数,甚至换一个游戏,可能产生完全不同的影响。
但如果我们只有一副已经洗好的牌,又不知道它背后的洗牌机制,该怎么办?虽然无法识别它背后的Shannon熵,我们至少可以检查它是否留下了某些“不像均匀洗牌”的痕迹。
能不能直接检验一副已经洗好的牌?
假设原假设是
\[H_0:\Pi\sim U,\]也就是这副牌来自完全均匀的洗牌。然后,我们选择一个统计指标 $T(\pi)$,例如:
- 相邻位置出现连续点数的次数;
- 同一花色聚集的程度;
- 最长递增片段的长度;
- 奇数位置和偶数位置是否具有异常关系。
以“连续点数的相邻次数”为例。我们可以在电脑中模拟大量均匀洗牌,计算每次的 $T$,从而得到它在 $H_0$ 下的分布。拿到实际牌序 $\pi_{\mathrm{obs}}$ 以后,再看 $T(\pi_{\mathrm{obs}})$ 在模拟结果中有多极端。
如果数值越大越可疑,那么相应的 $p$ 值可以写成
\[p = P_U\!\left( T(\Pi)\geq T(\pi_{\mathrm{obs}}) \right).\]如果这个概率非常小,我们就有理由拒绝“它来自均匀洗牌”的假设。不过,拒绝原假设只表示这副牌在所选指标下很难由均匀洗牌解释,并不能单独证明有人作假;反过来,没有拒绝原假设,也不能证明洗牌机制一定均匀。
这里,假设检验既有事前部分,也有事后部分。原假设、统计指标和“多极端才拒绝”的标准,应当在看牌以前规定;看到牌以后,我们才代入观测结果,计算统计量与 $p$ 值。
这一顺序很重要。均匀洗牌下,每一个完整牌序出现的概率都是 $1/54!$,所以不能因为“恰好这一副牌出现的概率极低”就判断它有问题——每一副具体牌都同样罕见。我们必须检验一个事先定义的结构,而不是看完结果以后再临时挑选最显眼的规律。
如果同一种洗牌手法可以重复观察很多次,检验会更有力量。我们不仅能问“这一副牌是否异常”,还可以问“这种手法是否系统性地产生更多连续牌、花色聚集或位置偏差”。前者是用一次实现对生成机制提出质疑;后者则直接使用重复样本研究生成机制。
不过,检验仍然有一个无法自动消失的漏洞:它只能检查我们选择去看的东西。
检验没有覆盖的,可能正是策略能够利用的
假设我们为斗地主设计了一组看起来相当全面的检验:每名玩家的点数分布是否正常,平均有多少对子、连对和炸弹,三张底牌的强度是否异常,每张关键牌是否偏向某个座位。只要样本足够多,这些指标都可以与均匀洗牌的基准比较。
即使所有指标都表现正常,仍然不能保证没有玩家可以利用洗牌规律。原因在于,打牌收益并不一定只取决于某个单独指标,而可能取决于许多变量的组合,以及玩家根据自己看到的信息采取什么策略。
例如,一种洗牌方法可能没有改变任何玩家平均拿到的点数、对子或炸弹数量,却改变了更隐蔽的条件关系:当我看到某种看似普通的手牌结构时,某几张关键牌更可能集中在左手玩家而不是右手玩家;或者某种出牌顺序在这种洗牌机制下更容易得到特定回应。一个不知道洗牌规律的人看不出差别,知道规律的人却可以据此调整叫牌、试探、留牌或出牌策略。
这时,真正被利用的不是“某张牌出现得更多”这样的单一特征,而是
\[\text{自己的信息} \longrightarrow \text{对别人手牌的判断} \longrightarrow \text{策略选择} \longrightarrow \text{最终收益}\]这整条关系。
把这个观察写得更一般一些:假设审计者检查 $k$ 个指标 $v_1,\ldots,v_k$,并要求实际洗牌 $P$ 与均匀洗牌 $U$ 满足
\[E_P[v_j]=E_U[v_j], \qquad j=1,\ldots,k.\]再固定一组合法策略 $\sigma$——包括玩家 $i$ 的决策规则以及对其他玩家行为的设定——令 $f_{i,\sigma}(\pi)$ 表示牌序为 $\pi$ 时玩家 $i$ 的收益。它可以取决于整手牌的联合结构、玩家能够观察到的信息,以及策略对这些信息的反应,而不必是点数、对子或炸弹数量的简单函数。
如果 $f_{i,\sigma}$ 可以由常数和这些审计指标的线性组合表示,那么控制所有 $v_j$ 的期望确实会保证这项策略收益的期望不变。但如果 $f_{i,\sigma}$ 不在它们张成的空间中,那么在有限牌序空间里,可以构造另一种洗牌分布:所有被检查的指标仍与均匀洗牌完全相同,策略 $\sigma$ 的期望收益却发生变化。
审计者控制的是自己预先选择的统计方向,玩家利用的却可能是这些指标的组合、条件关系和策略反应。到这里,我开始觉得,也许真正应该衡量的不是牌序还有多少“规律”,而是这些没有被检验发现的结构,究竟能不能给某个玩家带来实际优势。
从“有多乱”转向“谁能因此获利”
先固定游戏规则、发牌方式、玩家座位和收益标准。令 $U$ 表示完全均匀洗牌,$P$ 表示要评价的洗牌方法。再用 $f_{i,\sigma}(\pi)$ 表示牌序为 $\pi$ 时,在策略组合 $\sigma$ 下玩家 $i$ 的收益。
相对于完全均匀洗牌,这项策略的事前超额期望收益是
\[\Delta_{i,\sigma}(P) = E_P[f_{i,\sigma}]-E_U[f_{i,\sigma}].\]如果 $\Delta_{i,\sigma}(P)>0$,就说明在同一个游戏、同一个座位和同一种策略组合下,洗牌方法 $P$ 比均匀洗牌更有利于玩家 $i$。对于输赢总和固定的游戏,一个人的额外收益对应另一个人的损失,因此这可以直接解释为一种方向性的不公平。
现在,把假设检验重新放进来。假设审计者允许每个指标存在少量误差:
\[\left|E_P[v_j]-E_U[v_j]\right| \leq\varepsilon_j, \qquad j=1,\ldots,k.\]我们可以问:在所有满足这些表面约束的洗牌方法中,这项策略最多还能获得多少超额收益?
\[\Gamma_{i,\sigma}(\mathcal V,\varepsilon) = \sup_{P:\,P\text{通过审计}} \left(E_P[f_{i,\sigma}]-E_U[f_{i,\sigma}]\right).\]它表示通过现有审计以后,仍然能够隐藏的最大定向优势。
这时要区分两个结论:$\Delta_{i,\sigma}(P)>0$ 说明某个具体洗牌方法有利于玩家 $i$ 使用策略 $\sigma$;$\Gamma_{i,\sigma}>0$ 则说明审计规则存在漏洞——至少有一种能够通过审计的洗牌方法仍然可以提高这项策略的收益。
只考虑一个策略的平均收益还不够。某种洗牌可能不改变这项收益,却改变极端坏牌的概率;也可能只对另一种策略、另一个座位或者某类风险偏好产生影响。因此,更完整的模型需要考虑一组与游戏有关的策略收益和关键事件 $\mathcal F_G$:
\[\Gamma_G(\mathcal V,\varepsilon) = \sup_{P:\,P\text{通过审计}} \sup_{f\in\mathcal F_G} \left|E_P[f]-E_U[f]\right|.\]这个量问的是:在所有表面上通过检查的洗牌方法中,某个玩家、策略或关键事件最坏能够偏离均匀洗牌基准多少?
上面的审计约束是一个便于理论分析的事前版本。真实的假设检验还要指定样本量和显著性水平。那时,“通过审计”可以改成:使用这种洗牌方法产生一副或多副牌时,它以足够高的概率不会被检验拒绝。问题也就相应变成:一种洗牌方法可以多稳定地逃过检查,同时留下多少游戏优势?
再回到“洗干净”
最初洗牌时,我想找的是一个混乱指数:只要超过某条线,这副牌就算洗干净了。
但走到这里,这个问题已经分成了几个不同层次。
如果知道洗牌机制,就可以研究它的熵;如果只有一副已经实现的牌,可以用事先规定的统计检验判断它是否与均匀洗牌相容,但不能仅凭这副牌识别背后机制的熵;如果真正关心的是游戏公平,就还要追问那些没有被检验发现的结构能否改变玩家的事前收益。
因此,“洗干净”也许不是某一副牌孤立拥有的一种属性。它需要同时说明洗牌机制、审计者能看到什么,以及游戏会利用什么。
对一个给定游戏,更实用的标准或许是:
任何能够通过现有审计的洗牌方法,都不能再给任何玩家、策略或关键事件带来显著的事前优势。
于是,“究竟要洗几次”最终变成了一个更难、但也更接近公平的问题:
洗完以后,在我们没有检查到的地方,最多还剩下多少可以被游戏利用的结构?
参考资料
- Claude E. Shannon, “A Mathematical Theory of Communication”, The Bell System Technical Journal, 1948.
- Paul M. B. Vitányi, “How Incomputable Is Kolmogorov Complexity?”, 2020.
说明:本文提出的是一种解释和组织问题的框架。熵分解、线性审计约束、检验空间之外仍可存在分布偏差等思想,与信息论、矩问题、低阶独立和伪随机性等已有数学领域相邻。文章不主张仅凭上述定义已经得到新的学术定理。
存入收藏夹
选一个收藏夹归类;不选就留在「默认收藏夹」。