前言
很久之前曾经战双帕弥什概率欺诈被玩家告上法庭的事件,最近重新想起,在网上搜了一下相关问题,并且查了一下资料,本以为对于这个概率问题应该在就有文章进行计算,结果只找到了庭审录像,以及无数的新闻和少数的计算机模拟。出于想要解决这个问题的想法,我明确了一下问题,咨询了一些同学,最终在同学的指点(天才智慧)下,解决了这个问题。
这个问题是这样的,游戏中公示概率为某角色综合出货概率为1.9%,同时60发保底,但是在玩家的亲自尝试中发现概率明显低于公示概率,经过询问客服得到回复,1.9%概率为包括保底的概率,而非单次出货率。在某篇文章中指出在庭审中库洛游戏一方承认单次概率为0.5%(毫无疑问我并没有去观看庭审视频),在加上60次保底之后的概率为1.9%。在开始思考这个问题之后我开始疑惑,究竟什么是包含保底的概率,因为单次抽卡必定是保底或是非保底,这两种情况的概率是完全不同的,所谓综合概率必定是这两种情况的某种平均,而这种平均究竟是在什么意义下计算的就令人疑惑了。经过计算机模拟,我最终还是确定了问题,这是一个极限问题。
提出问题
这是这个问题我最初提出的版本,事实证明这样提出问题似乎对解决问题没有帮助,但是这是最接近现实的提法。
设\(X_1,\dots,X_n,\dots\)是随机变量序列,\(p\in (0,1)\),\(N\ge 2\)为正整数,为方便起见我们设当\(n\le 0\)时\(X_n=0\),再设随机变量序列满足以下条件\[X_n|X_{n-1},X_{n-2},\dots,X_{n-N+1}\sim \begin{cases}b(1,p)&,\max\{X_{n-1},\dots,X_{n-N+1}\}=1\\1&,\text{否则}\end{cases}\]
这是一个时间序列,可是目前我这方面的知识不算完整,暂且就以这种方式表示。我在简单查阅资料后认识到这至少不是一个平稳的时间序列,因此并没有去查阅更多的资料试图从时间序列的角度解决这个问题。
我们要先证明该序列服从大数定律,再证明其期望和的均值收敛,进一步该序列的前\(n\)项的均值序列依概率收敛到期望和的均值的极限。
这个问题确实有些复杂,服从大数定律的容易证明的,注意到随机变量之间并不独立,再验证可知该序列满足马尔可夫大数定律的条件。但是在均值的极限的求法上,我们实际上要求的是前\(n\)次抽卡的出货数期望,这个问题我感到十分困难,对于\(n\)较大的情况,例如\(n=2N\)的情况,期望已经非常难求了,于是只好作罢。
解决问题
在和我的同学讨论之后,我的同学提出了公式。我最初没能理解,但惊奇于它是对的。也许我的统计直觉还是有所欠缺。下面是公式。 \[p_0=\left(\sum_{k=1}^{N-1}kp(1-p)^{k-1}+N(1-p)^{N-1}\right)^{-1}\] 这实际上是从零开始抽卡第一次出货时的抽卡次数的期望的倒数。听了我的同学的解释,我慢慢的理解了,这种方法的思想即是抽中一次的次数的倒数应该就是抽中的概率。这确实应该是对的,但是我还是追求一个严格的解释。
严格解释
在经过一段时间的思考后,我由这个公式的来源出发,想到了一个相对严谨的解释。
设\(Y_1,\dots,Y_n,\dots\)是随机变量序列,\(p\in (0,1)\),\(N\ge 2\)为正整数,其中\(Y_k\)定义为出货第\(k-1\)次后再次出货需要抽的次数,则对于\(\forall k\in N^*,Y_k\)服从一个离散分布,满足\[P(Y_k=n)=\begin{cases}p(1-p)^{n-1} &,n=1,\dots,N-1\\(1-p)^{N-1} &, n=N\end{cases}\]
并且所有\(Y_k\)间相互独立。
这时就有\(\displaystyle\sum_{i=1}^n Y_n\)表示抽出\(n\)发出货的抽卡数,那么其均值\(\dfrac{1}{n}\displaystyle\sum_{i=1}^n Y_n\)就表示\(\dfrac{\text{抽卡数}}{\text{出货数}}\),由辛钦大数定律我们知其依概率收敛到其期望,即
\[\dfrac{1}{n}\displaystyle\sum_{i=1}^n Y_n \xrightarrow{P} EY_n = \sum_{k=1}^{N-1}kp(1-p)^{k-1}+N(1-p)^{N-1}\]
注意到其均值恒取正值且其倒数正是 \[\dfrac{\text{出货数}}{\text{抽卡数}}=\dfrac{n}{\displaystyle\sum_{i=1}^n Y_n}\xrightarrow{P}\left(\sum_{k=1}^{N-1}kp(1-p)^{k-1}+N(1-p)^{N-1}\right)^{-1}\] 正是我们要求的结果。
更多
事实上,类似的概率问题也可以用同样的算法,只要抽奖概率的分布已知,且抽出一次之后概率重置,就都可以使用这种期望的倒数的方法进行计算。例如在Dota2中大多数概率事件的算法均为PRD算法,以暴击为例,你的暴击概率会随着你连续未暴击的次数增加而增加,直到你暴击后概率重置,游戏中显示的概率实际上是计算后的均值,而均值的计算方法也就是这种方法。这种方法能够有效优化游戏的体验,也算是一种常见的方法了。
后记
这篇文章写了很久,主要是因为我最近沉迷游戏,中间间隔了很长时间,导致中间很多话不像人话。我想也许这篇文章只要上一个公式就可以了,就像我看到很多CSDN的文章,只有一句话。但是我还是想这么写,也是算是日记的一种吧。我还记得曾经我在数分习题课上学习了高斯公式的拓展(很久之后在PDE课上见到了应用),课下我写了一篇笔记,同学借去看的时候吐槽我怎么写的那么多(“废话”,我想他没把这个词说出口),我看了之后自己也有点觉得,以至于我再没勇气去克服羞耻去看我的笔记。不过我想笔记也就是这个目的,重点是做的过程,写的过程中让印象加深了,之后不看也罢,毕竟比我自己写的好的笔记多得是,想要复习知识点记得关键词去搜资料就好了,我到现在还记得那个高斯公式的应用里在图形内部的奇点挖了一个小孔,然后通过取极限的方法得到奇点的值,现在来看当时还算是高级的方法可能已经不是那么高级了,但对比我已经忘记的那么多东西,这还是证明写笔记还是有用的吧。