前言
四年前,我写过一篇博客三国杀中的概率学问题。当时有一条评论,让我算一算神郭嘉慧识的摸牌数。这也是我写这篇博客的动力来源。相比起四年前,我的数学水平渐长,于是想做一些更深入的数学问题。这篇文章将从更加理论的角度来看待这些概率学问题,试图做一些更一般的结论。最近我也会写一系列关于三国杀中的概率学问题的博客,讨论一些有意思的武将的技能收益,也欢迎大家指点一二!
三国杀中的概率学问题
先声明,我不想从实践的角度来作解释,我只想研究这些问题中所蕴含的数学模型,所以,此系列文章均默认为在理想条件下的概率。
理想条件在本文中指:牌堆无限且随机,各花色的牌数永远相等,各点数的牌数永远相等。
神郭嘉慧识的期望摸牌数
神郭嘉是三国杀手杀中的一个武将,一技能慧识是一个强力的摸牌技。为了更好地研究这个问题,我们抛开体力上限小于10的限制。
问题概括:不断亮牌,直到亮出的牌中有相同花色的牌就停止,求平均亮出多少张牌。
方法一
我们先用传统方法来做一下这个问题。由于牌一共有四种花色,慧识最少会亮出2张牌,最多可以亮出5张牌。对于亮出的牌数进行分类讨论,求出每种情况的概率,再做加权平均就可以求出期望摸牌数。设亮出i张牌的概率为 P i P_i Pi。
亮出两张牌的情况:只亮出了两张牌,说明第二张牌的花色跟第一张牌一样,于是 P 2 = 1 4 P_2=\frac{1}{4} P2=41
亮出三张牌的情况:亮出三张牌,也就是第二张牌跟第一张牌花色不同,第三张牌跟第一张或第二张花色相同,于是 P 3 = 3 4 ∗ 2 4 = 3 8 P_3=\frac{3}{4}*\frac{2}{4}=\frac{3}{8} P3=43∗42=83
亮出四张牌的情况:亮出前三张牌的花色各不相同,亮出第四张的花色与前三张的某一张相同,于是 P 4 = 3 4 ∗ 2 4 ∗ 3 4 = 9 32 P_4=\frac{3}{4}* \frac{2}{4}* \frac{3}{4}=\frac{9}{32} P4=43∗42∗43=329
亮出五张牌的情况:前四张刚好亮出了四种不同的花色,第五张必定与前面的牌花色重复,于是 P 5 = 3 4 ∗ 2 4 ∗ 1 4 = 3 32 P_5=\frac{3}{4}*\frac{2}{4}*\frac{1}{4}=\frac{3}{32} P5=43∗42∗41=323
期望摸牌数 E = ∑ i = 2 5 i ∗ P i = 103 32 = 3.21875 E=\sum_{i=2}^5{i*P_i}=\frac{103}{32}=3.21875 E=∑i=25i∗Pi=32103=3.21875
方法二
对比周泰的不屈(见三国杀中的概率学问题)和神郭嘉的慧识之后,可以发现,其实两个问题非常类似,都是不停亮牌,直到花色或者点数重复就停止。唯一的区别在于,一副牌有4种花色,13个点数。所以我们把这两个问题看成是在不同参数下的同一类问题。我们假设 f ( x ) f(x) f(x)是在牌的种类为 x x x时的数学期望。那么慧识的期望摸牌数为 f ( 4 ) f(4) f(4),不屈的期望为 f ( 13 ) f(13) f(13)。
那么我们看看能不能求出 f ( x ) f(x) f(x)。根据数学期望的公式, f ( x ) = ∑ n = 1 x + 1 n ∗ P n f(x)=\sum_{n=1}^{x+1}{n*P_n} f(x)=∑n=1x+1n∗Pn
通过观察或者简单的计算可知, P n = A x n − 1 ( n − 1 ) x n P_n=\frac{A_x^{n-1}(n-1)}{x^n} Pn=xnAxn−1(n−1)
于是 f ( x ) = ∑ n = 1 x + 1 A x n − 1 ( n − 1 ) n x n = ∑ n = 0 x A x n n ( n + 1 ) x n + 1 = ∑ n = 0 x n ( n + 1 ) x ! x n + 1 ( x − n ) ! f(x)=\sum_{n=1}^{x+1}{\frac{A_x^{n-1}(n-1)n}{x^n}}=\sum_{n=0}^{x}{\frac{A_x^{n}n(n+1)}{x^{n+1}}}=\sum_{n=0}^{x}{\frac{n(n+1)x!}{x^{n+1}(x-n)!}} f(x)=∑n=1x+1xnAxn−1(n−1)n=∑n=0xxn+1Axnn(n+1)=∑n=0xxn+1(x−n)!n(n+1)x!
这个复杂的式子,我们无法求解。于是我在把这个图像画出来之后,观察发现,图像的走势跟 x \sqrt{x} x非常相似。于是我用 a x + b a\sqrt{x}+b ax+b来拟合这个函数。拟合结果为 f ( x ) = 1.2493 x + 0.7116 f(x)=1.2493\sqrt{x}+0.7116 f(x)=1.2493x+0.7116
拟合的函数图像如图所示
两条线已经几乎重合到了一起,肉眼已经看不出它们的区别了。
f ( 4 ) = 3.2102 f(4)=3.2102 f(4)=3.2102,跟精确值3.21875的差距不到0.01。 f ( 13 ) ≈ 5.216 f(13)\approx5.216 f(13)≈5.216,跟精确值5.212的差距也不到0.01。
虽然 f ( x ) f(x) f(x)的表达式比较复杂,难以求解,但是拟合函数形式相对简单,且误差很小,在实际计算中也更加方便。
总结
本文将慧识和不屈这两个相似的技能合在一起,构造了一个通用的函数,并给出了函数的表达式。由于表达式过于复杂,于是又给出了较为简单的函数的拟合形式,并且拟合的精度相当高。本文既计算出了原问题的精确解,又给出了一个解此类问题的新思路。