猫游升天/冥机制的探索
修改于2021/07/163255 浏览攻略
1 写在前面
最近看社区里不少玩家都在抱怨刷渣猫的天的时候经常一连十几张红票都不升天,怀疑是不是更新后暗改了什么东西,本人作为入坑一个多月的萌新从其他大佬的攻略得到信息:2.0副本要360的天,遂也开始了升天(双重意味)的不归路。

然后就是连续十几张红票不举,我还能说什么呢,只能化身rotk:我最后的wuwuwu一份热情wuwuwu和斗志wuwuwu都已经消耗殆尽了,他们说什么我都不会再刷了。没办法,该刷还得刷,就像rotk还是去了小象一样,毕竟360天给的东西实在是太多了。

(该图取自本社区玩家@心舞飞扬的图,侵删。)
2 结论
方便不想看数学推导的同学,直接放出结论:
如果(注意是如果)猫游的升天升冥机制服从伪随机分布,那么对于VH本,18张红票至少一次升天/冥,最有可能发生在第4次;对于H本,68张绿票至少一次升天/冥,最有可能发生在第8次。就我目前的体验,我认为猫游大概率采取这种方式。
如果天冥值采取真随机分布,那我只能怀疑猫游的策划有没有学过概率论并大喊一声“欧吃矛!”了。当然,采用这种方式应该是小概率。
对伪随机分布有兴趣的同学可以继续往下读。
3 背景、数学推导及程序实现
众所周知,为了保护普遍存在的非酋玩家(比如我,还有屏幕前的你),伪随机分布广泛存在于各大游戏中。著名的有DOTA2中的各种暴击,闪避,被动晕,以及各种概率触发的物品效果,大部分与概率挂钩的机制全部服从伪随机分布,尽管如此,还是出现了打五下晕三下你***啊.mp4之类的名场景。

可见如果采用真随机之后欧皇猖狂的样子和非酋怒摔手机的样子,为了避免这样的场面,伪随机分布应运而生。
以渣猫升天为例,设定一个初始的C值,当通关一次vh王城后,有C的概率渣猫升天;如果第一次渣猫没有升天,第二次通关时渣猫升天概率变为2C;如果第二次还没升天,第三次概率为3C,以此类推,连续(N-1)次都没升天时,则第N次升天概率为NC。中途只要升天,那么概率重置为C。如果你真的是个非到家的非酋,到了第Nmax次时,终于满足了NmaxC≥1,于是非酋落泪(双重意味)的事情发生了:这一次渣猫终于能升天了。

这样的伪随机分布相当于给了非酋玩家一个保底,即Nmax次必定升天/冥。于是接下来的内容就要涉及到数学推导了,有兴趣可以继续读下去。
前文提到,当NmaxC≥1时,意味着本次必定能升天,于是有Nmax≥1/C,Nmax是满足这一条件的最小正整数,所以定义

其中ceil为向上取整函数,Nmax就是升天的保底次数,这是其中一个方程,含有Nmax和C两个未知数,为了得到C和Nmax的值,还需要另外一个方程,即用升天的期望概率为20%(以vh为例)这一条件再得到一个方程。设Xk为事件{刷了k张票时渣猫第一次升天},按照每次概率递增的伪随机分布,显然有以下结论:
当k=1时,X1发生的概率

当1<k<Nmax,Xk发生的概率

当k=Nmax时,XNmax发生的概率

由此我们得到了Xk的概率分布,再由平均5张票(即20%概率)升一次天得到第二个方程

联立式(3.1)和(3.5),并将式(3.2)~(3.4)代入即可得到关于C和Nmax的方程组,这样就能解出C和Nmax了……个鬼啊,由于式(3.1)涉及到向上取整函数,导致方程变成了超越方程,人类的算力是有极限的,除非超越人类!

幸运的是我们活在21世纪,即使不用石鬼面也能不做人(划掉)也能用前人留下来的数学方法和计算机进行计算。下面是基于MATLAB和二分法计算C和Nmax的程序,游戏社区不支持代码块也是很正常的啦,所以直接截图了,注释很清楚,有兴趣学习的同学建议理清思路后自己写一遍,还是挺简单的。



直接从DOTA2wiki扒一张表与我们的程序结果进行对照。其中P(T)为目标概率,P(A)为算法得出的实际概率,C和MaxN即上文提及的C和Nmax,Most Probable N为事件最有可能发生在第N次,Average N为平均发生一次的次数。

运行结果。这里给出了渣猫的两个升天概率的结果,与表中一致。

经测试,10%~30%与上表完全一致。35%以上时实际概率与目标概率已经有了较大误差,算法不再适用,5%时我的程序更新c值到0.0059就不再更新,并没有逼近表中的0.0038,目前还在查找原因,初步推测可能与计算误差和变量精度有关。不过以上成果还是能说明我们最终需要的结论,重申一遍结论:
如果(注意是如果)猫游的升天升冥机制服从伪随机分布,那么对于VH本,18张红票至少一次升天/冥,最有可能发生在第4次;对于H本,68张绿票至少一次升天/冥,最有可能发生在第8次。
最后感叹一下:坐在实验室摸鱼写这个真舒服啊!
by一个萧瑟仙贝的粉丝(头像从另一个游戏社区偷的,如果对原图主人造成不良影响,我会立刻更换)