文章目录

游戏规则的公平性判断:双方获胜概率是否相等

发布于 2026-10-23 10:42:53 · 浏览 29 次 · 评论 0 条

判断一个游戏公不公平,先把它变成一道概率题:把双方各自的获胜概率算出来,看是否相等。下面按顺序执行,每一步都能用手算或一段短代码完成。


1. 锁定判断标准

  1. 明确 公平的数学定义:在完全不靠技巧、只靠运气的游戏里,双方获胜概率相等,各为 $\frac{1}{2}$。

  2. 确认 游戏是不是“零和”:一方赢必然意味着另一方输。如果存在平局、和局或第三方,就把问题拆成“甲胜率”和“乙胜率”两个数分别比较。

  3. 写下 你要计算的两个目标量,记作 $P_A$(甲获胜概率)和 $P_B$(乙获胜概率)。判断条件只有一条:$P_A = P_B$ 时规则公平,否则不公平。


2. 列出完整的样本空间

这一步是全部计算的地基,出错率最高。

  1. 列出 游戏进行一次时,所有可能出现的结果。注意是“一次完整进行”,不是“一回合”。

  2. 检查 每个结果是否等可能。只有等可能的结果,才能用“数个数、做除法”的方式算概率。

  3. 避免 把不同可能性的结果合并成一种。典型错误是掷两枚骰子算点数和,把结果写成 2 到 12 共 11 种。实际上和为 2 只有 (1,1) 一种组合,和为 7 却有 (1,6)、(2,5)、(3,4)、(4,3)、(5,2)、(6,1) 六种组合,两者根本不等可能。

  4. 改用 带顺序的写法:把两枚骰子分别看作“第一枚、第二枚”,样本空间就是 36 种组合,每种出现机会相同。这一步改对,后面的数字才有意义。


3. 数出双方获胜的结果数

  1. 标记 把上一步列出的每一个结果,逐个判定“甲赢、乙赢、还是平局”。

  2. 统计 三个数量:$n_A$(甲赢的结果数)、$n_B$(乙赢的结果数)、$n_0$(平局结果数),总数为 $N$。

  3. 核对 用等式 $n_A + n_B + n_0 = N$ 复查有没有漏数或重数。

以“两枚骰子点数和大于 7 则甲赢,否则乙赢”为例:36 种组合里,和大于 7 的有 15 种,和小于等于 7 的有 21 种,$15 + 21 = 36$,核对通过。


4. 算概率、比大小

  1. 代入 古典概率公式:

$$P_A = \frac{n_A}{N}, \qquad P_B = \frac{n_B}{N}$$

  1. 比较 两个分数的大小。上例中 $P_A = \frac{15}{36} \approx 0.417$,$P_B = \frac{21}{36} \approx 0.583$,两者不相等,规则对甲不利。

  2. 处理 平局。如果规则规定平局重来,那么平局那部分概率会按比例重新分给双方,此时要用条件概率重算:$P_A = \frac{n_A}{n_A + n_B}$,$P_B = \frac{n_B}{n_A + n_B}$。如果规则规定平局算某一方赢,就直接把平局结果并入那一方重新数。


5. 用对称性做快速判断

很多游戏不需要算,看一眼结构就能下结论。

  1. 检查 规则对双方是否完全“镜像”:用到的道具、可选的数值范围、获胜条件,交换双方身份后是否一字不变。

  2. 判定 完全镜像则直接判公平,无需计算。石头剪刀布就是典型:三种手势两两相克,双方可选手势集合相同,任何一方都没有专属优势,胜率各为 $\frac{1}{3}$。

  3. 警惕 隐藏的不对称。只要存在“谁先动”“谁能看到对方的选择”“谁多一张牌”这类差异,镜像就被打破,必须回到第 2 步老实计算。

抽签是另一个容易误判的例子:10 张签里只有 1 张中奖,先抽的人中奖概率是 $\frac{1}{10}$;后抽的人要先熬过“前面没中”,概率是 $\frac{9}{10} \times \frac{1}{9} = \frac{1}{10}$。先抽后抽概率相同,抽签顺序公平。


6. 多局制要重新计算

“三局两胜”“五局三胜”会改变结论,不能直接沿用单局概率。

  1. 识别 单局获胜概率 $p$。若单局公平,$p = \frac{1}{2}$。

  2. 计算 三局两胜下的总胜率(先赢两局者胜,最多打三局):

$$P_3 = 3p^2(1-p) + p^3$$

  1. 判断 把具体数值代入。当 $p = \frac{1}{2}$ 时,$P_3 = 3 \times \frac{1}{4} \times \frac{1}{2} + \frac{1}{8} = \frac{1}{2}$,仍然公平。

  2. 注意 单局不公平会被多局制放大。当 $p = 0.6$ 时,$P_3 = 3 \times 0.36 \times 0.4 + 0.216 = 0.648$,劣势方从 40% 掉到约 35.2%。局数越多,强者越强。


7. 涉及下注时改用期望值判断

胜率相等只是“输赢次数”意义上的公平。一旦带钱,还要看赔率配不配。

  1. 写出 期望收益公式:

$$E = P_A \times W - P_B \times L$$

其中 $W$ 是赢时净赚的钱,$L$ 是输时净亏的钱。

  1. 令 $E = 0$,解出公平条件:$P_A \times W = P_B \times L$。

  2. 换算 成赔率形式:公平赔率应为 $\frac{W}{L} = \frac{P_B}{P_A}$。胜率越低的一方,赔率必须越高,才能抵消劣势。

  3. 检验 常见骗局:胜率五五开,但赢了只赔 1 倍、输了要赔 2 倍,此时 $E = 0.5 \times 1 - 0.5 \times 2 = -0.5$,每玩一次平均亏掉半个单位,规则不公平。


8. 用穷举代码验证手算结果

手算容易漏项,用程序把所有结果跑一遍最稳。

  1. 编写 穷举脚本,把所有等可能结果生成出来,逐个数。
from itertools import product

outcomes = list(product(range(1, 7), repeat=2))
total = len(outcomes)
win_a = sum(1 for a, b in outcomes if a + b > 7)
win_b = total - win_a

print("总数", total, "甲赢", win_a, "乙赢", win_b)
print("甲胜率", win_a / total, "乙胜率", win_b / total)
  1. 核对 输出应为总数 36、甲赢 15、乙赢 21,与手算一致。

  2. 复算 多局制时,用组合数直接算:

from math import comb

def best_of_three(p):
    return comb(3, 2) * p**2 * (1 - p) + p**3

print(best_of_three(0.5))
print(best_of_three(0.6))
  1. 确认 输出分别是 0.5 和 0.648 后,再下结论。

9. 排查四种常见误判

  1. 检查 样本空间是否真的等可能。只要出现“把不同组合数的结果当成一种”,概率立刻失真,这是最隐蔽也最常见的一类错误。

  2. 检查 平局有没有被正确处理。平局既不能直接丢掉,也不能默认给某一方,必须按规则重算。

  3. 检查 有没有信息差。后手能看见先手的选择、能根据对方动作调整策略,这类游戏不能只用静态计数,要按“每种应对策略”分别算概率。

  4. 检查 规则是否存在循环克制关系。三种以上选项两两相克时,需确认每个选项的“被克数量”相同,否则先选或后选会产生优势。

  5. 检查 已发生的对局是否改变了后续概率。比如“抽完不放回”的游戏,每抽一次剩余牌堆就变了,第二局的胜率不等于第一局,此时要按每一步的当前状态重算,不能拿单局概率乘局数。

评论 (0)

暂无评论,快来抢沙发吧!

扫一扫,手机查看

扫描上方二维码,在手机上查看本文