游戏王MD中的概率问题
前言
游戏王的先后手差距
游戏王/YGO是一个先后手差距非常大的卡牌游戏。
虽然有各种各样的“手坑”让后手玩家可以在先手玩家的第一回合进行干扰,然而作用有限:
- 先手玩家可以无效它们
- 如今的卡组即使受到少量干扰也常常能做出妥协场面形成压制
- 先手玩家也能使用手坑来干扰后手玩家(点名批评增殖的G)
因此即使先手少抽1张牌并且没有战斗阶段,先手仍然有着巨大的优势,以致于硬币的正反很大程度上左右最终的胜负。
在一个抛硬币决定先后的游戏里喜提n连硬币反面概率有多大呢?是谁11连后手跑来算概率
算是(久违地)引起了我整点数学的兴趣。由此顺便联想到了不少相关的概率问题(某卡组升段/掉段的概率、bo3连胜制的胜率、...),零零碎碎算了不少内容最终成了这篇文章。
改成猜拳决定先后的话概率上是没什么区别的,还是会有倒霉蛋喜提10+连后手。
游戏的胜负也不过是复杂的抛硬币
抛硬币是个相当通用的例子,各种概率恒定的独立事件都可以抽象为硬币来处理。比如已知卡组胜率连胜n场的概率之类的(当然正经算的话还得考虑先后手因素)。所以本文的计算也没有直接使用p=21的均匀硬币模型,这样还有个好处:当你怀疑“硬币”的时候可以拿来做贝叶斯估计XD
TL;DR
我把这篇文章的主要计算结果都放在这里,如果你对冗长的计算没什么兴趣也许可以不看之后的计算。有些结果就已经很冗长了
抛m次硬币连续n次正面问题
假设单次硬币正面概率为p,那么为了出现连续n次硬币,期望的抛硬币次数是
E(m)=pn(1−p)1−pn
抛了m次硬币,有连续n次正面的概率是
P(Zm≥n)=j=1∑⌊nm⌋(j−1m−nj)(p−1)j−1pnj[p+j(1+m−nj)(1−p)]
当m≫n且n充分大时,
P(Zm≥n)∼1−e(m+1)(p−1)pn
实卡无穷对局连胜K局问题
AB双方无限对局,由A首先先攻,单局胜者下一局后攻。当某一方首先获得单局K连胜时视为游戏胜利。第一局(主卡局),卡组A对卡组B的先攻胜率为p0;在备牌局,卡组A的先攻胜率为p1,后攻胜率为p2。
分出胜负所需局数的期望E由以下方程组给出
⎩⎨⎧E1=(E−1+1−p21)(1−p2K−1)E−1=(E1+p11)(1−(1−p1)K−1)E=(1−p0)E−1+p0E1+1
A获得最终游戏胜利的概率是
pK+=(1−p1)K−1+p2K−1−(1−p1)K−1p2K−1p2K−1[1−(1−p0)(1−p1)K−1]
特别地,当K=2时,
E=1−p1+p1p22+p0+p1p2−p0(p1+p2)p+=1−p1+p1p2p2(p0+p1−p0p1)
如果双方使用完全相同的卡组(含side),那么p1+p2=1;如果双方在MD打,没有side,那么p0=p1。
MD天梯升降段问题
设某卡组单局游戏胜率为p=2p先+p后,假设刚升上某一小段,问升段/降段发生的期望局数,以及升段的概率。
钻石段/白金段
累计4胜升段,0胜场3连败掉段。
E=p6−5p5+11p4−13p3+11p2−5p+12p5−4p4−p3+10p2−6p+3p+=p6−5p5+11p4−13p3+11p2−5p+1p4(p2−3p+3)
大师段
累计5胜升段,0胜场3连败掉段。
E=2p6−10p5+22p4−24p3+16p2−6p+13p6−9p5+12p4−11p3+16p2−9p+3p+=2p6−10p5+22p4−24p3+16p2−6p+1p5(p2−3p+3)
p=0.5时,钻石段升段概率为63.6%,大师段升段概率为58.3%。单局胜率低于50%的卡组升段的概率可以大于50%。钻石段升降段期望局数约为13,大师段升降段期望局数约为10。
一般情况
一般地,如果某小段需要累计N胜升段,0胜场M连败掉段,卡组单局胜率为p。那么,能成功升段的概率为:
p+=f(N)−f(−M)−f(−M)
其中,
f(n)=⎩⎨⎧2p−1p[1−(p1−p)n]1−(1−p)n,n≥0,n<0
而升降段发生所需的期望局数E由以下线性方程组给出:
⎩⎨⎧E1=2p−1N−1+(E0−2p−1N)pN+1−p(1−p)NpN(1−p)−p(1−p)NE=(E1+p1)[1−(1−p)M]
抛多少次硬币会出现连续n次正面?
首先我们想知道大概抛多少次硬币会出现连续n次正面,换句话说,想要知道出现连续n次正面所需要的投掷次数的期望。
抛一枚硬币,记正面的概率为p. 记恰好m次投掷硬币获得n次连续正面的概率为Pm,n
显然有,Pn,n=pn 以及 Pm,n=0 (m<n)
对于m>n,即前n次没能投出全正面的情形。我们考虑首次出现反面时的投掷次数i,不难得到递推式:
Pm,n=i=1∑npi−1(1−p)Pm−i,n
考虑数列{Pm,n}m的生成函数:
Gn(x)=i=0∑∞Pi,nxi=i=1∑∞Pi,nxi(for n≥1)(2)
综合(1)和(2)可以得到:
Gn(x)[1−(1−p)x−p(1−p)x2−⋯−pn−1(1−p)xn]=Pn,nxn=pnxn(3)
于是,
Gn(x)[1−(1−p)x1−px1−pnxn]=pnxn
Gn(x)=1−x+(1−p)pnxn+1(1−px)pnxn(4)
所以使得连续n次出现正面需要的投掷次数期望为En=Gn′(1)=pn(1−p)1−pn
方差则为
Dn=G′′(1)+G′(1)−[G′(1)]2=p2n(1−p)22[(n+1)pn+1−p2n+1+p2n−(n+2)pn+1]+pn(1−p)1−pn−[pn(1−p)1−pn]2=p2n(1−p)21−(2n+1)(1−p)pn−p2n+1
你问咋算这么复杂的导数?
出门右转Wolfram Alpha,或者使用本地的Mathematica/Maple/SymPy之类的符号计算软件。
对于p=21,有Gn(x)=2n+1(1−x)+xn+1(2−x)xn,En=2n+1−2,Dn=22n+2−(2n+1)2n+1−2
分析
也就是说如果硬币公平的话,平均每30把就会出现4连先手和4连后手。不过结果的标准差基本上和期望一样大,所以结果很不稳定,所以可能没啥参考价值?
抛m次硬币连续至少n次正面的概率
比起期望,我们当然对概率本身更加感兴趣,不过这计算就繁琐了不少。
闭形式
记抛m次硬币出现的最长连续正面次数为Zm,那么我们要求的就是P(Zm≥n)的大小。
沿用上一节的记号,我们有
P(Zm≥n)=i=0∑mPi,n(5)
也就是说,所求的就是数列{Pm,n}m的前m项和。由于前面已经算出了{Pm,n}m的生成函数,我们可以直接写出P(Zm≥n)的生成函数Fn(x)
Fn(x)=1−x1Gn(x)=(1−x)[1−x+(1−p)pnxn+1](1−px)pnxn=1−x1+1−x+(1−p)pnxn+1pnxn−1(6)
定义1. (系数算子) [xn]f(x)
对幂级数i=0∑∞aixi以及n∈Z 定义
[xn]i=0∑∞aixi={an0,if n≥0,,if n<0.
按照定义易得以下性质:
- [xn]f(x)=Γ(n+1)f(n)(0),if n≥0
- [xn]xmf(x)=[xn−m]f(x)
按照生成函数的定义,我们有
P(Zm≥n)=[xm]Fn(x)=[xm](1−x1+1−x+(1−p)pnxn+1pnxn−1)=[xm](i=0∑∞xi+(pnxn−1)i=0∑∞[x−(1−p)pnxn+1]i)=1+[xm](pnxn−1)i=0∑∞[x−(1−p)pnxn+1]i=1+(pn[xm−n]−[xm])i=0∑∞xi[1−(1−p)pnxn]i=1+(pn[xm−n]−[xm])i=0∑∞xij=0∑i(ji)(−1)j(1−p)j(px)nj=1+i=0∑m(pn[xm−n−i]−[xm−i])j=0∑i(ji)(−1)j(1−p)j(px)nj=1+pnj=0∑⌊nm⌋−1(jm−n(j+1))(p−1)jpnj−j=0∑⌊nm⌋(jm−nj)(p−1)jpnj=1+j=0∑⌊nm⌋−1(jm−n(j+1))(p−1)jpn(j+1)−1−j=1∑⌊nm⌋(jm−nj)(p−1)jpnj=j=1∑⌊nm⌋(j−1m−nj)(p−1)j−1pnj−j=1∑⌊nm⌋(jm−nj)(p−1)jpnj=j=1∑⌊nm⌋(j−1m−nj)(p−1)j−1pnj[1−jm−(n+1)j+1(p−1)]=j=1∑⌊nm⌋(j−1m−nj)(p−1)j−1pnj[p+j(1+m−nj)(1−p)](7)
渐进分析
从闭形式中很难看出来概率的变化趋势,为此我们还需要一个渐进估计表达式。
这一节我们将得到:当m≫n且n充分大时,有
P(Zm≥n)∼1−e(m+1)(p−1)pn(8)
亚纯估计定理
道理上来讲,生成函数实际上只是形式幂级数,是否收敛并不重要。但如果我们知道它是收敛乃至解析的,那么就能用上一些分析学的方法来对其系数做出估计。
定理:亚纯生成函数的估计
设f(z)是一个亚纯函数,它在包含原点的区域R内除了有限个极点外是解析的.
设R>0是模最小极点的模,z0,⋯,zs是f(z)的所有模为R的极点,R′>R是f(z)次小模极点的模。
那么对∀ε>0,有
[zn]f(z)=[zn](j=0∑spp(f;zj)+O((R′1+ε)n))
其中pp(f;zj)=j=1∑r(z−zj)ja−j为f在r阶极点zj处Laurent展开的主要部分。
这个定理在《发生函数论》的第5章可以找到,这里我们就不加证明直接拿来了。这个定理表明,决定函数系数的最主要因素是它的模最小极点。
进一步,如果z0是f(z)的(其中一个)模最小极点,且它是r阶极点,那么它对系数的贡献为
[xn]pp(f;z0)=[xn]j=1∑r(z−z0)ja−j=[xn]j=1∑rz0j(1−z0z)j(−1)ja−j=[xn]j=1∑rz0j(−1)ja−jk=0∑∞(kk+j−1)(z0z)k=[xn]k=0∑∞zk(j=1∑rz0k+j(−1)ja−j(j−1k+j−1))=j=1∑rz0n+j(−1)ja−j(j−1n+j−1)
特别地,如果z0是1阶极点,那么它的贡献就是−z0n+1Res[f(z),z0].
分析极点阶数
借由亚纯估计定理,我们的思路就是分析生成函数的极点。
回到P(Zm≥n)的生成函数(6),由于1−x1只是单纯给各项系数加上个1,我们只需考虑
Qn(x)=1−x+(1−p)pnxn+11−pnxn
NOTE
Qn(x)=1−x1−Fn(x)=i=0∑∞[1−P(Zm≥n)]xi=i=0∑∞P(Zm<n)xi,因此Qn(x)就是P(Zm<n)的生成函数,
为了得到Qn(x)的极点,我们考虑方程
φ(x)=def1−x+(1−p)pnxn+1=0(9)
的根。
首先不难发现φ(p1)=0,但x=p1是个可去奇点,并不符合要求。
进一步分析,来求极值:
φ′(x)=(n+1)(1−p)pnxn−1
极值点xm=p1n(n+1)(1−p)1,极小值
φ(xm)=1−npn(1−p)1(n+1)n+1nn=1−n(np)n(1−p)1(n+1)n+11≤1−nnnp+⋯+np+1−p/(n+1)n+11(n+1)n+11=0
最后采用了均值不等式来放缩,当且仅当p=n+1n时取等,此时xm=1+n1.
借助均值不等式,不难发现1+n1≤xm以及φ(1+(1−p)pn)>0,φ(1+n1)≤0,因此方程φ(x)=0在(1,+∞)上有两个根, 它们分布在1+1/n的两侧, 其中一个是1/p。
φ(x)=0的最小模根是实根
证明留作习题 不是重点,不想啰嗦 贴一张n=8,p=0.6时φ(x)在复平面上的函数值作为参考吧~
实际上其它复根的模长不小于另一个实根(提示:使用三角不等式),因此为了使用亚纯估计定理,我们只需要考虑这个函数的实根就足够了。
(I) p=n+1n 时
Res[Qn(x);x0]=x→x0limφ′(x0)1−pnx0n=(n+1)(1−p)pnx0n−11−pnx0n
由亚纯估计定理可知:
P(Zm<n)=[xm]Qn(x)∼1−(n+1)(1−p)pnx0n1−pnx0n(x01)m+1=(1−p)(n+1−nx0)1−px0(x01)m+1(10a)
(II) p=n+1n 时
a−1=x→x0limφ(x)(1−pnxn)(x−x0)=−(n+1)(1−p)2=−2
a−2=x→x0limφ(x)(1−pnxn)(x−x0)2=n(n+1)(1−p)pnx0n−12(1−pnx0n)=0
因此,
P(Zm<n)=[xm]Qn(x)∼2(x01)m+1(10b)
估计极点x0
当n充分大时,总是有p<n+1n,这时1/p不是φ(x)=0最小的实根。记最小实根为x0. 注意到φ(1+(1−p)pn)>0和φ(1+e(1−p)pn)<0,结合前面的导数分析,我们有1+(1−p)pn<x0<1+e(1−p)pn,因此
x0=1+Θ((1−p)pn)
进一步,记K=n→∞lim(1−p)pnx0−1∈[1,e],则
K=n→∞lim(1−p)pnx0−1=n→∞limx0n+1≤n→∞lim[1+e(1−p)pn]n+1=exp(n→∞limln(1+e(1−p)pn)(n+1))≤exp(n→∞lime(1−p)pn(n+1))=exp(0)=1
因此,K=1,也就是说
x0∼1+(1−p)pn(n→∞)
将以上近似回代到(10a)中,有
P(Zm<n)∼(1−p)(n+1−nx0)1−px0(x01)m+1∼(x01)m+1=(1+(1−p)pn1)m+1=(1+p−n1−p)−(m+1)=((1+p−n1−p)p−n)−pn(m+1)∼(e1−p)−pn(m+1)=e(m+1)(p−1)pn
从而,
P(Zm≥n)=1−P(Zm<n)∼1−e(m+1)(p−1)pn(8)
e:又是我~
TODO: 误差分析
好麻烦欸,有空再整吧...(多半是鸽了)
Bo∞中的连胜
Bo3决定胜负的卡牌游戏
游戏王实卡的赛制是Bo3,也就是三局两胜制。在前一局游戏结束后,败方可以选择下一局的先后手,同时双方可以根据对方的卡组以及先后手情况从自己预先准备的15张备牌中更换一些针对卡。
由于换备和三局两胜制的存在,因此会比MD的一把定胜负更平衡一些。
设想这样一种赛制: 双方无限对局,当某一方首先获得单局2连胜时视为游戏胜利。 理论上来说,相比Bo3赛制,这样会要求更大的玩家水平和卡组构筑差距才能决出胜负。
假设对局双方分别使用卡组A和卡组B,在第一局(主卡局),卡组A对卡组B的先攻胜率为p0;在备牌局,卡组A的先攻胜率为p1,后攻胜率为p2.
为了简单起见,我们假设双方卡组都是先手比后手更有优势的卡组。因此当某个玩家输了一局的时候,下一局他一定会选择先手。
那么问题是,如果使用卡组A的玩家先攻:
期望
这个对局过程显然是马尔可夫的。
对局总共有5种状态,S={S0=−2,S1=−1,S2=0,S3=1,S4=2},其中S2=0是第一局(初始态),S0和S4分别代表连输/连赢2次的状态(吸收态)。
我们可以写出相应的转移矩阵:
M=11−p1000001−p01−p20000000p1p000000p21
设从状态Si转移到某个吸收态的期望为Ei,则
⎩⎨⎧E0=0E1=(1−p1)E0+p1E3+1E2=(1−p0)E1+p0E3+1E3=(1−p2)E1+p2E4+1E4=0
解得,(E1, E2, E3)=1−p1+p1p2(1+p1, 2+p0+p1p2−p0(p1+p2), 2−p2)
也就是说,分出胜负的期望局数是E2=1−p1+p1p22+p0+p1p2−p0(p1+p2)
概率
设对局中前一把赢了之后最终取胜的概率为A,前一把输了之后最终取胜的概率为B,利用
{A=p2+(1−p2)BB=p1A
解得,(A,B)=(1−p1+p1p2p2,1−p1+p1p2p1p2)
最终胜率为P=p0A+(1−p0)B=1−p1+p1p2p2(p0+p1−p0p1)
K连胜的情形
之前我们讨论的是2连胜的情形,假如将胜利条件改为有一方K连胜才结束那又如何计算呢?
游戏局数的期望
期望的计算还是一样,根据状态转移矩阵可以列出2K+1元的线性方程组:
⎩⎨⎧Ei=(1−p2)E−1+p2Ei+1+1Ei=p1E1+(1−p1)Ei−1+1E0=(1−p0)E−1+p0E1+1EK=E−K=0,i∈{1,⋯,K−1},i∈{−1,⋯,−K+1}
由于我们只关心E0,简单化简后可以得到
⎩⎨⎧E1=(E−1+1−p21)(1−p2K−1)E−1=(E1+p11)(1−(1−p1)K−1)E0=(1−p0)E−1+p0E1+1
具体的解就不写了,太长了😵
关于胜率的求解,我们可以扩展之前的方法,但更优雅的做法是借助鞅论的知识。
鞅与停时定理
定义2. 鞅
对于随机过程{Xn}和{Mn}。如果满足:
- Mn只与X0,⋯,Xn有关,
- E(Mn+1∣X0,⋯,Xn)=Mn
则称{Mn}是一个关于{Xn}的鞅。
其中条件2也可以等价地写成E(Mn+1−Mn∣X0,⋯,Xn)=0,如果将等号改为大于等于/小于等于,那么过程{Mn}就称为上鞅/下鞅。
上鞅和下鞅的定义也有反过来的,可能是因为和函数凹凸性相关,于是和凹函数/凸函数一样成了笔糊涂账。Anyway,这里我们只用鞅,并不涉及上鞅与下鞅。
直观地来讲,如果一个随机过程它每一步的期望都保持恒定不变,是一个平稳的过程,那么就称它为鞅。换句话说,对任意有限的n,我们有
E(Mn)=E(M0)
若T是{Mn}的一个停时,记T∧n=min{T,n},那么显然有
E(MT∧n)=E(M0)
停时定理所讨论的是:在什么情况下有E(MT)=E(M0)成立?
鞅停时定理(Optional Stopping Theorem)
{Mn}是关于{Xn}的鞅,T是{Mn}的一个停时,那么以下均为E(MT)=E(M0)的充分条件:
- 存在K<∞,使得P(T≤K)=1
- E(T)<∞,并且E(∣Mn+1−Mn∣)≤c<∞
- P(T≤∞)=1,并且MT∧n≤K<∞
NOTE
OST的成立条件其实就是在问MT∧n是否一致可积,也就是能否交换积分和极限的顺序。如果答案是肯定的,那么显然就有
E(M0)=n→∞limE(MT∧n)=E(n→∞limMT∧n)=E(MT)
计算思路
那么如何使用OST来计算K连胜的概率呢?
我们设随机变量Xn={当前连胜场次},如果当前连胜那么Xn为正,反之则Xn为负,T为首次K连胜或K连败所需的局数,K连胜的概率为PK+.
计算的思路是构造一个关于{Xn}鞅{f(Xn)},这个鞅满足OST的使用条件,这样一来我们有
f(X0)=E(f(X0))=E(f(XT))=PK+f(K)+(1−PK+)f(−K)
从而
PK+=f(K)−f(−K)f(X0)−f(−K)(*)
所以问题的关键就在于如何构造这个{f(Xn)}
构造鞅函数
本来这时候该注意到了,但本文的目的并不是显摆注意力,所以这里就写明白如何切实地构造这个函数。
对Xn>0,也就是连胜中的情形,此时赢一把Xn+1=Xn+1,输一把Xn+1=−1,按照鞅的定义,我们写出
f(Xn)=E(f(Xn+1)∣Xn)=p2f(Xn+1)+(1−p2)f(−1)
对Xn<0,也就是连败中的情形,此时赢一把Xn+1=1,输一把Xn+1=Xn−1,按照鞅的定义,我们写出
f(Xn)=E(f(Xn+1)∣Xn)=p1f(1)+(1−p1)f(Xn−1)
对Xn=0,这是第一局主卡局,有
f(0)=E(f(X1)∣X0=0)=p0f(1)+(1−p0)f(−1)
为了方便,令f(0)=0,我们只需求解函数方程组:
⎩⎨⎧f(n)=p2f(n+1)+(1−p2)f(−1)f(n)=p1f(1)+(1−p1)f(n−1)f(0)=p0f(1)+(1−p0)f(−1)=0,,n>0,n<0
这并不困难:
f(n)=⎩⎨⎧p2−n+1−p00−(1−p1)n+1+1−p0,n>0,n=0,n<0
容易验证f(n)是有界的,因而可以使用停时定理。
于是由(∗),我们得到
PK+=f(K)−f(−K)−f(−K)=p2−K+1−p0+(1−p1)−K+1−1+p0(1−p1)−K+1−1+p0=(1−p1)K−1+p2K−1−(1−p1)K−1p2K−1p2K−1[1−(1−p0)(1−p1)K−1](11)
天梯升降段
另一个有趣的问题是已知卡组的胜率为p,如何计算在MD天梯升段/降段的期望局数和概率?
你可以考虑先攻胜率p1后攻胜率p2,但无非就是把每步转移概率里的p换成(p1+p2)/2
MD的段位机制如下:
- 累计净胜K局升段(白金/钻石段K=4,大师段K=5)
- 净胜0局的情况下连败3局掉段
- 掉段流程中只要有赢一局,回到净胜1局的状态
这个问题的解法和之前的K连胜问题基本一样:
- 根据状态转移矩阵列出线性方程组求解期望
- 构造鞅使用停时定理来计算最终概率
读者可以参考上一节的计算,这里就简单写写。
钻石段:K=4
状态转移矩阵:
Mp=11−p000000001−p000000001−p000000001−p0000ppp01−p000000p01−p000000p00000000p1
记E=E−3E−2E−1E0E1E2E3E4,c=01111110,A=2I62
解线性方程(A−Mp)E=c,得
E=p6−5p5+11p4−13p3+11p2−5p+1102p3+2p2−p+1−2p4+2p3+5p2−3p+22p5−4p4−p3+10p2−6p+3−p5+5p4−11p3+15p2−9p+4p5−2p4−3p3+13p2−12p+5−2p5+12p4−29p3+36p2−22p+60
为了计算升段概率,我们构造f(n)使{f(Xn)}是个鞅,
f(n)=⎩⎨⎧2p−1p[1−(p1−p)n]1−(1−p)n,n≥0,n<0
停时T={首次到达n=4∨n=−3},设升段概率为p+,则由停时定理
f(0)=E(f(XT))=p+f(4)+(1−p+)f(−3)=0
解得,
p+=f(4)−f(−3)−f(−3)=p6−5p5+11p4−13p3+11p2−5p+1p4(p2−3p+3)
大师段:K=5
状态转移矩阵:
Mp=11−p0000000001−p0000000001−p0000000001−p00000ppp01−p0000000p01−p0000000p01−p0000000p000000000p1
解线性方程(A−Mp)E=c,得
E=2p6−10p5+22p4−24p3+16p2−6p+103p4+3p2−2p+13p5−6p4+3p3−8p2+5p−23p6−9p5+12p4−11p3+16p2−9p+3−2p5+10p4−19p3+24p2−13p+43p6−14p5+29p4−35p3+32p2−17p+5−p5+8p4−22p3+32p2−21p+63p6−19p5+52p4−78p3+69p2−33p+70
鞅和之前的一样(因为段位机制没变,只是停止条件变了),停时变成T={首次到达n=5∨n=−3},此时
p+=f(5)−f(−3)−f(−3)=2p6−10p5+22p4−24p3+16p2−6p+1(p2−3p+3)p5
简单分析
胜率
我们把K=4和K=5时的胜率-升段率曲线画出来:
- 一个卡组要在天梯上保持不升不降,其胜率并不需要达到50%:在白金/钻石段只需要46%的胜率,而在大师段则需要48%
- 一个单局胜率在50%的卡组实际上有60%左右的概率是能升段的
游戏局数
把K=4和K=5时的胜率-期望局数曲线画出来:
- 除非单局胜率特别高(>78%),不然大师段升降段会比钻石段更快(大概是因为掉段更容易?)
- 期望局数在略小于50%胜率的地方取到最大(不过并不是总体胜率50%的点,还要更小一点)
- 期望上来说,大师段10把升降段,钻石白金13把升降段
一般情况
总结一下计算结果,如果某小段需要累计N胜升段,0胜场M连败掉段,卡组单局胜率为p。
升段率
由于段位机制没有变化,因此对应的鞅{f(Xn)}也不变:
f(Xn)=⎩⎨⎧2p−1p[1−(p1−p)Xn]1−(1−p)Xn,Xn≥0,Xn<0
于是能成功升段的概率就是:
p+=f(N)−f(−M)−f(−M)
期望
升降段发生所需的期望局数由线性方程(A−Mp)E=c给出。其中,
A=2IN+M−12,c=01N+M−10,Mp=1qq⋱qqpp⋮p⋱pq⋱qpp1, q=1−p
解得的列向量E中的每一个元素代表从某个胜负场状态开始到达升段/降段的期望局数。
当然,也可以把上述矩阵形式的线性方程组写成大家更熟悉的形式:
⎩⎨⎧Ei=(1−p)Ei−1+pEi+1+1Ei=(1−p)Ei−1+pE1+1EN=E−M=0,i∈{0,1,⋯,N−1},i∈{−1,⋯,−M+1}
如果我们只关心E0,那么和上一节类似,可以直接化简上面的线性方程组:
⎩⎨⎧E1=2p−1N−1+(E0−2p−1N)pN+1−p(1−p)NpN(1−p)−p(1−p)NE0=(E1+p1)[1−(1−p)M]
那么是咋化简的呢
实际上就是将前两行当作数列的递推方程来处理,转化为求数列通项的问题。
不过这里这个比上一节里的更难些,上一节中两个递推方程都是一阶线性递推,只需凑成等比数列就行。这里第一个方程是二阶线性递推,会稍麻烦些。这里还是写写详细过程吧。
首先来处理比较简单的第二行,利用待定系数法消去常数1,凑成Ei+λ=(1−p)[Ei−1+λ]的形式:
Ei−(E1+p1)=(1−p)[Ei−1−(E1+p1)],i∈{0,−1,⋯,−M+1}
这就是等比数列的递推关系,考虑E−M=0,我们就得到
E0=(E1+p1)[1−(1−p)M]
再来处理第一行。首先还是要消去常数项,但是因为Ei前系数刚好相互抵消的关系,直接用Ei+λ来凑行不通,换用Ei+λi,于是:
Ei+2p−1i=(1−p)[Ei−1+2p−1i−1]+p[Ei+1+2p−1i+1],i∈0,1,⋯,N−1
设Ai=Ei+2p−1i,我们有Ai=(1−p)Ai−1+pAi+1。这是个齐线性二阶递推,其特征方程是px2−x+1−p=0,两个特征根分别为x1=1和x2=p1−p,于是:
Ai=λ1(p1−p)i+λ2
考虑AN=EN+2p−1N=2p−1N以及A0=E0,有
Ai=pN−(1−p)NE0−2p−1N⋅pipN(1−p)i−pi(1−p)N+2p−1N
代入i=1即得
E1=pN−(1−p)NE0−2p−1N⋅ppN(1−p)−p(1−p)N+2p−1N−1