前言
三国杀是我从小学时就热爱的一款游戏,这种热爱延续至今。现在,我想从纯数学的角度来计算三国杀中的一些概率学问题。
三国杀中的概率学问题
先声明,我不想从实践的角度来作解释,我只想研究这些问题中所蕴含的数学模型,所以,以下问题均默认为在理想条件下的概率。
理想条件在本文中指:牌堆无限且随机,各花色的牌数永远相等,各点数的牌数永远相等。
甄姬洛神的期望摸牌数
甄姬的洛神就是不断判定,直到判定到红色牌为止,然后你可以获得判定到的黑色牌。这一度被认为是一个很神奇的技能,既可以一连摸十几张牌,又经常一张牌都摸不到,那这个技能的期望摸牌数(在本文中,“期望”和“平均”的意思相同)是多少呢?
我有以下四种方法可以做出答案,思维难度由易到难,计算难度由难到易。
方法一(考虑结果)
考虑结果就是考虑洛神在第几轮终止判定(判定到红色牌)的概率和摸牌数。每一轮概率乘上摸牌数的和就是期望摸牌数。
第一轮判定到红色的概率为
1
2
\frac{1}{2}
21,摸牌数为0。
第二轮轮到判定的概率是
1
2
\frac{1}{2}
21(第一轮判定到黑色才能轮到第二轮的判定),判定到红色牌的概率是
1
2
\frac{1}{2}
21,所以在第二轮终止判定的概率是
1
4
\frac{1}{4}
41;摸牌数则是1。
同理,第三轮终止判定的概率是
1
8
\frac{1}{8}
81,摸牌数是2。
那么在第n轮终止判定的概率是
1
2
n
\frac{1}{2^n}
2n1,摸牌数是n-1。
所以,期望摸牌数
S
=
1
2
×
0
+
1
4
×
1
+
1
8
×
2
+
…
…
+
1
2
n
×
(
n
−
1
)
S=\frac{1}{2}\times0+\frac{1}{4}\times1+\frac{1}{8}\times2+……+\frac{1}{2^n}\times(n-1)
S=21×0+41×1+81×2+……+2n1×(n−1)
这是一个典型的差比数列求和问题,错位相减即可。
该式两边乘上2,得:
2
S
=
1
×
0
+
1
2
×
1
+
1
4
×
2
+
…
…
+
1
2
n
−
1
×
(
n
−
1
)
2S=1\times0+\frac{1}{2}\times1+\frac{1}{4}\times2+……+\frac{1}{2^{n-1}}\times(n-1)
2S=1×0+21×1+41×2+……+2n−11×(n−1)
两式相减得:
S
=
(
1
2
+
1
4
+
1
8
+
…
…
+
1
2
n
)
−
1
2
n
×
(
n
−
1
)
S=(\frac{1}{2}+\frac{1}{4}+\frac{1}{8}+……+\frac{1}{2^n})-\frac{1}{2^n}\times(n-1)
S=(21+41+81+……+2n1)−2n1×(n−1)
括号中为等比数列求和,运用等比数列求和公式,得:
S
=
1
−
1
2
n
−
n
−
1
2
n
S=1-\frac{1}{2^n}-\frac{n-1}{2^n}
S=1−2n1−2nn−1
当n趋于无穷大时,
S
=
1
S=1
S=1
求得期望摸牌数为1张。
方法2(考虑过程)
考虑能得到到每一张牌的概率,相加即可。
第一张牌要第一轮判定为黑才能得到,概率为
1
2
\frac{1}{2}
21(也可以理解为第一轮摸了
1
2
\frac{1}{2}
21张牌)
第二张牌要第一轮和第二轮都判定为黑才能得到,概率为
1
4
\frac{1}{4}
41(也可以理解为第二轮摸了
1
4
\frac{1}{4}
41张牌)
第n张牌要前n轮都判定为黑才能得到,概率为
1
2
n
\frac{1}{2^n}
2n1(也可以理解为第n轮摸了
1
2
n
\frac{1}{2^n}
2n1张牌)
期望摸牌数
S
=
1
2
+
1
4
+
1
8
+
…
…
+
1
2
n
=
1
S=\frac{1}{2}+\frac{1}{4}+\frac{1}{8}+……+\frac{1}{2^n}=1
S=21+41+81+……+2n1=1
方法3(递归)
思考洛神的过程,每一次摸牌的过程是重复的。这种具有重复性的过程可以用递归来完成。
设洛神的期望摸牌数为
x
x
x。若第一轮判定牌为红色,则摸牌数为0;若第一轮判定牌为黑色,则摸牌数为
1
+
x
1+x
1+x(先得到判定到的这张黑色牌,再重复洛神的过程,摸x张牌)。
则可列出方程
x
=
1
2
×
0
+
1
2
×
(
1
+
x
)
x=\frac{1}{2}\times0+\frac{1}{2}\times(1+x)
x=21×0+21×(1+x)
解得
x
=
1
x=1
x=1
方法4(整体法)
从整体上看,每一轮判定到黑色和判定到红色的概率相等,所以总体判定到的黑色牌数应该等于判定到的红色牌数。而判定到的红色牌数永远是1张,所以判定到的黑色牌数平均也是一张。所以洛神的期望摸牌数是1张。
洛神的期望摸牌数总结
我用4种方法算出来期望摸牌数都是1张。这4种方法中,有的方法要用到高中的等比数列求和的相关知识;有的只用列个方程,就能轻轻松松解出相同的答案;而还有的只需要在脑子里想一想,答案就出来了。可见,思维才是化简复杂式子的最大利器。
闪电期望判定次数
闪电就是不断判定,直到判定牌为黑桃2~9。
发现没有,闪电的判定和洛神的判定十分相似,只不过洛神是一个人在一个回合内的判定,闪电是每个人轮流判定。研究完甄姬洛神的期望摸牌数,这个问题就简单多了。
我大概估计闪电一次就判中的概率为
1
8
\frac{1}{8}
81。根据甄姬问题的方法4,用整体法考虑,出现黑桃2~9一次,出现其它牌平均七次,所以闪电期望判定次数为8次。
1
8
\frac{1}{8}
81只是我随便估计的数据,不是很准确。那我就假设闪电的实际判中概率为
x
x
x(
0
<
x
<
1
0<x<1
0<x<1),再来计算期望判定次数。还是运用整体法的思维,黑桃2~9出现
x
x
x次,其它牌出现
1
−
x
1-x
1−x次。 黑桃2~9出现1张,其它牌就出现
1
−
x
x
\frac{1-x}{x}
x1−x张,总共就出现
1
−
x
x
+
1
=
1
x
\frac{1-x}{x}+1=\frac{1}{x}
x1−x+1=x1张牌。所以闪电的期望判定次数为
1
x
\frac{1}{x}
x1次。当然,用其它几种方法也能得到相同的答案。
神吕蒙
神吕蒙有两个技能——涉猎和攻心,两个技能都和概率学有点关系。
神吕蒙攻心期望弃牌数
由攻心这个技能,我想到了两个有关概率的问题。第一个是该角色手牌中的期望红桃牌数;第二个是该角色手牌中有红桃牌让你弃置的概率(期望弃牌数,不考虑置于牌堆顶)。假设该角色有
n
n
n张手牌,那么第一个问题的答案显然是
n
4
\frac{n}{4}
4n,没有什么讨论的必要,所以重点来看第二个问题。
概括一下问题:有
n
n
n张牌,求其中有红桃牌的概率。
正难则反,求有红桃牌的概率,不如反过来求没有红桃牌的概率。
n
n
n张牌,4种花色,仅仅从花色来考虑,有
4
n
4^n
4n种可能(这些牌是有顺序的)。如果没有红桃牌的话,相当于只有3种花色,就有
3
n
3^n
3n种可能。那么没有红桃牌的概率就是
3
n
4
n
\frac{3^n}{4^n}
4n3n。于是,有红桃牌的概率为
1
−
3
n
4
n
1-\frac{3^n}{4^n}
1−4n3n。
所以,神吕蒙攻心期望弃牌数为
1
−
3
n
4
n
1-\frac{3^n}{4^n}
1−4n3n。
神吕蒙涉猎期望摸牌数
问题概括:有5张牌,每种花色的牌至多拿一张,求期望摸牌数。
方法1(枚举法)
因为确定是5张牌,所以无论怎样,枚举法是能做出答案的。
我用四个数字代表四种花色的牌数(比如2111表示一种花色有2张,其它3种花色各一张)。接下来就开始枚举各种情况了。
5000:情况数为
A
4
1
=
4
A^1_4=4
A41=4种,能摸1张牌;
4100:情况数为
A
4
2
×
A
5
5
A
4
4
=
60
A^2_4\times\frac{A^5_5}{A^4_4}=60
A42×A44A55=60种,能摸2张牌;
3200:情况数为
A
4
2
×
A
5
5
A
2
2
×
A
3
3
=
120
A^2_4\times\frac{A^5_5}{A^2_2\times A^3_3}=120
A42×A22×A33A55=120种,能摸2张牌;
3110:情况数为
A
4
3
A
2
2
×
A
5
5
A
3
3
=
240
\frac{A^3_4}{A^2_2}\times\frac{A^5_5}{A^3_3}=240
A22A43×A33A55=240种,能摸3张牌;
2210:情况数为
A
4
3
A
2
2
×
A
5
5
A
2
2
×
A
2
2
=
360
\frac{A^3_4}{A^2_2}\times\frac{A^5_5}{A^2_2\times A^2_2}=360
A22A43×A22×A22A55=360种,能摸3张牌;
2111:情况数为
A
4
4
A
3
3
×
A
5
5
A
2
2
=
240
\frac{A^4_4}{A^3_3}\times \frac{A^5_5}{A^2_2}=240
A33A44×A22A55=240种,能摸4张牌。
总共有
4
5
=
1024
4^5=1024
45=1024种情况。
期望摸牌数
S
=
4
×
1
+
60
×
2
+
120
×
2
+
240
×
3
+
360
×
3
+
240
×
4
1024
=
3124
1024
≈
3.05
S=\frac{4\times1+60\times2+120\times2+240\times3+360\times3+240\times4}{1024}=\frac{3124}{1024}\approx3.05
S=10244×1+60×2+120×2+240×3+360×3+240×4=10243124≈3.05
方法2(从攻心得到的启发性方法)
枚举法在当牌数确定的时候确实可以做,但还是太麻烦。或许我们可以从神吕蒙攻心期望弃牌数那里得到一些启发。神吕蒙攻心期望弃牌数为 1 − 3 n 4 n 1-\frac{3^n}{4^n} 1−4n3n,当 n = 5 n=5 n=5时,这个值为 781 1024 \frac{781}{1024} 1024781。换言之,5张牌中平均有红桃牌的概率为 781 1024 \frac{781}{1024} 1024781,也就是涉猎平均能摸到 781 1024 \frac{781}{1024} 1024781张红桃牌,那平均摸到黑桃、梅花、方片牌的张数也是这么多。所以涉猎摸牌数为 781 1024 × 4 = 3124 1024 ≈ 3.05 \frac{781}{1024}\times4=\frac{3124}{1024}\approx3.05 1024781×4=10243124≈3.05。
神吕蒙总结
看来神吕蒙的两个技能是一脉相承的,可以从攻心得到涉猎的启发性方法,从而避免了繁琐的枚举。而且,枚举法只能在牌数确定的情况下才有用,但从攻心得到的启发性方法,则是能在牌数为 n n n的情况下做出普遍适用的答案(若 n n n张牌,则涉猎的期望摸牌数为 4 − 3 n 4 n − 1 4-\frac{3^n}{4^{n-1}} 4−4n−13n),并且速度很快。结合甄姬的洛神、周瑜的英姿,我发现这些武将的技能一般都是能多摸一张牌,所以这些技能设计得还是很合理的。
周泰不屈期望值
问题概括:先摸一张牌置于武将牌上,再摸一张牌,若这张牌与之前摸到的牌(武将牌上的牌)点数均不同则重复摸牌操作,直到这张牌点数和其中一张牌的点数相同则结束。求平均摸第几张牌的时候结束。
方法1(考虑结果)
考虑在每一轮结束的概率和摸牌数,每一轮的概率乘摸牌数的和就是不屈的期望值。
一共有A~K这13种不同的点数
第一轮摸第一张牌,武将牌上没有别的牌,所以结束概率为0,摸牌数为1。
第二轮在理想条件下,结束的概率是
1
13
\frac{1}{13}
131(和第一张牌点数相同),摸牌数为2。
第三轮结束的概率是
12
13
×
2
13
\frac{12}{13}\times\frac{2}{13}
1312×132(第二轮不结束,且牌的点数和第一张或第二张相同),摸牌数为3。
第四轮结束的概率是
12
13
×
11
13
×
3
13
\frac{12}{13}\times\frac{11}{13}\times\frac{3}{13}
1312×1311×133,摸牌数为4。
第
n
n
n(
1
≤
n
≤
14
,
n
∈
Z
1\leq n\leq14,n\in Z
1≤n≤14,n∈Z)轮结束的概率是
A
13
n
−
1
×
(
n
−
1
)
1
3
n
\frac{A^{n-1}_{13}\times(n-1)}{13^n}
13nA13n−1×(n−1),摸牌数为
n
n
n。
第14轮结束的概率是
13
!
1
3
n
\frac{13!}{13^n}
13n13!,摸牌数为14。
不屈的期望值
S
=
0
×
1
+
1
13
×
2
+
12
13
×
2
13
×
3
+
12
13
×
2
13
×
4
+
…
…
+
13
!
1
3
n
×
14
S=0\times1+\frac{1}{13}\times2+\frac{12}{13}\times\frac{2}{13}\times3+\frac{12}{13}\times\frac{2}{13}\times4+……+\frac{13!}{13^n}\times14
S=0×1+131×2+1312×132×3+1312×132×4+……+13n13!×14
这么长一串式子,我根本无法化简计算,只能通过计算机算出
S
≈
5.21235
S\approx5.21235
S≈5.21235
方法2(考虑过程)
考虑摸每一张牌不结束的概率。
摸第一张牌,肯定不会结束,概率为1。
摸第二张牌,要不结束就得和第一张牌点数 不同,概率为
12
13
\frac{12}{13}
1312。
摸第三张牌,得在摸第二张牌不结束的概率的基础上乘以这张牌与前两张牌均不同的概率,为
12
13
×
11
13
\frac{12}{13}\times\frac{11}{13}
1312×1311。
摸第
n
n
n(
1
≤
n
≤
13
,
n
∈
Z
1\leq n\leq13,n\in Z
1≤n≤13,n∈Z)张牌,不结束的概率为
A
13
n
1
3
n
\frac{A^n_{13}}{13^n}
13nA13n
摸第十三张牌不结束的概率为
13
!
1
3
n
\frac{13!}{13^n}
13n13!
不屈期望值
S
=
1
+
12
13
+
12
13
×
11
13
+
…
…
+
13
!
1
3
n
+
1
S=1+\frac{12}{13}+\frac{12}{13}\times\frac{11}{13}+……+\frac{13!}{13^n}+1
S=1+1312+1312×1311+……+13n13!+1(最后要加个1是因为还得加上最后一张让这个过程结束的牌)
虽然这个式子看上去比方法1的式子简洁一点,但我还是无法化简计算。用计算机算出来
S
≈
5.21235
S\approx5.21235
S≈5.21235。
周泰不屈期望值总结
考虑结果和考虑过程的区别是,反正这张牌都是要摸的,只是计算的时候不一样,一个是在结束时统一计算,一个是只要经过这一轮就把摸的这张牌算上。虽说计算方式不同,但还是一样的复杂,还得借助计算机。但我想不到像洛神的整体法和涉猎的启发性方法这样的能大大降低计算难度的好方法。所以希望哪位大神能想出更好的方法并和我讨论。
总结
本文仅仅是从数学的角度来考虑了这些概率学问题,而实际问题则要复杂得多,所以本文旨在探索三国杀中一些有趣的问题,并用数学在力所能及的范围解决。把游戏和数学结合起来,既能更好地加深对游戏的理解,又能进一步探索数学的美。