欢迎光临散文网 会员登陆 & 注册

关于明日方舟抽卡概率的计算

2020-05-04 11:43 作者:十月飞雪三月飞花  | 我要投稿

前言:虽然本文发表得有点晚,但是由于明日方舟的抽卡机制总体上保持不变,所以本文的结论对所有卡池都成立,可以作为今后大家抽卡的参考。

另外,UP本人也曾向其他人咨询过这个问题,我听到的所有回答都是在大量模拟实验的基础上给出的,没有纯理论上的推导。本文将尝试从纯理论的角度出发,来得到与模拟实验相一致的结果。如果有错误之处,还请大家斧正。

Part  0    研究的问题

本文的目的是算出来我总共抽x次,最后得到某个六星(比如W)的概率。

Part  1    抽卡规则

这一部分在游戏里写得很清楚,我不多赘述,直接放图:

这相当于内置了一个计数器,当计数器记录的数大于50时,抽到六星的概率会上升;抽到一次六星,计数器归零。

Part  2   分析

这是最关键的部分,决定了我们是否可以得到正确的结果。

首先,我们可以想到,在每次抽卡前,计数器总会记录一个数,我们称这个数为a。由于Part1中介绍的抽卡机制,我们不难发现,当0<=a<50时,抽到六星的概率一直是2%;当a>=50时,抽到六星的概率是[2*(a-48)]%,那么当a=98时,抽到六星的概率为100%,抽卡后计数器必然归零,所以a的取值有一个范围,即0<=a<=98。

其次,对于每一次抽卡,a的值有且只有一个。那么,对于每一次抽卡,如果a的取值我们无法确定,那么我们可以假设某个值a_0出现的概率为p(a_0)。显然,p(0)+p(1)+···+p(98)=1。对于某个a值,我们抽到非六星的概率p(a)*P(a)为:

p(a)*0.98   {0<=a<50}

p(a)*[0.98-(a-49)*0.02]    {50<=a<=98}

这样一来,在某次抽卡时a不确定的情况下,我们得到了抽到非六星的概率,同时确定了抽到六星的概率。

接着,我们引进一个新记号:p(x,a)。它的含义为:当我在一个池子里抽第x次时,计数器记录的数为a的概率。

那么让我们来想一下这种情况:如果a不等于零,这意味着什么?显然,对于某个确定的a,这意味着在前a次抽卡中,我一直抽到非六星。那么我们知道:p(x,a)=p(x-1,a-1)*P(a)=···=p(x-a,0)*P(a)*···*P(1)。其中从P(a)到P(1)的值我们已经可以确切地知道。

如果a=0,又会怎样呢?显然,这意味着我在前一次抽卡中抽到了六星(也有可能是我一次都没抽过,这是特殊情况),使得计数器归零了。那么就有:p(x,0)=sigma(0<=i<=98)[p(x-1,i)*(1-P(i))]。其中sigma是累加符号。

最后回到我们在Part0中提出的问题。假设我们抽了x次后得到目标六星的概率是m,那么抽不到的概率就是(1-m)。假设目标六星的出率占所有六星出率的k%,那么记我们抽了x次抽不到目标六星的概率为m(x),计数器记录的数为a的概率为p_(x,a)。

根据上面的分析,我们很容易得到:

m(x)=sigma(0<=i<=98)[p_(x,a)]

p_(x,a)=p_(x-a,0)*P(a)*···*P(1)      (a不等于0)

p_(x,0)=sigma(0<=i<=98)[p(x-1,i)*(1-P(i))*(1-k%)]    (这里乘上(1-k%)是为了区分其余六星)

再加上一些限制条件和初始条件:

p_(x,a)=0   (x<=a)

p_(1,0)=1

然后按照这个思路写出程序,就可以算出具体概率。

Part  3   一些数据

为了对比结果,我挑出一些数据,供大家检查。(以抽出W为例

x=10,m=0.0678

x=50,m=0.2962

x=100,m=0.6290

x=150,m=0.7955

x=200,m=0.8859

x=250,m=0.9361

x=300,m=0.9642

如有谬误,欢迎在评论区中指正!

关于明日方舟抽卡概率的计算的评论 (共 条)

分享到微博请遵守国家法律