
这是一个比较硬核的计算过程的演示,如果没有兴趣那么直接翻到后面查看结论吧2333
那么直接进入正题(`・ω・´)
1~50次事件发生的概率为p,从51次开始事件发生的概率每次增加p;
p=0.02;
该事件在1~99内每次发生的概率为:
01:p
02:(1-p)*p
03:(1-p)^2*p
...
x(1<=x<=50):(1-p)^(x-1)*p
...
50:(1-p)^49*p
51:(1-p)^50*(2p)
52:(1-p)^50*(1-2p)*(3p)
...
y(51<=y<=99):(1-p)^50*(1-2p)*(1-3p)*...*(1-(y-50)p)*((y-49)p)
下面求期望:
设N=(1-p)^50
则E=
1*p+
2*(1-p)*p+
...+
x*(1-p)^(x-1)*p+
...+
51*N*2p+
...+
y*N*(1-2p)*(1-3p)*...*(1-(y-50)p)*((y-49)p)
计算结果=34.59455
计算使用C++,数据类型使用double(可能会有精度不够,但影响不大,有兴趣的朋友可以使用高精度再做一下,我懒2333),代码会贴在末尾;
所以按期望看,差不多平均35发就能出货了呢(我已经抽了50多发3次了ヽ(`Д´)ノ)
然后再用经典的几何分布来代替本模型(即视为没有保底的机制)
Pn=(1-p)^(n-1)*p
期望E=1/p
所以如果视为没有保底,则每一次事件发生的概率p=1/34.59455=0.0289063;
按现在公布的这个模型来算,明日方舟的抽卡期望为34.59455(即在大概35发左右出);
如果按没有保底的机制等价替换(即按期望相同算),单发的出货概率为0.0289063。
#include <cstdio>
#include <cmath>
int main()
{
double p = 0.02;
double res = 0;
for (int i = 1; i <= 50; i++)
{
double tmp = pow((1 - p), (i - 1)) * p * i;
res += tmp;
}
double N = pow((1 - p), 50);
for (int i = 51; i <= 99; i++)
{
double tmp = N * i;
for (int j = 50; j < i - 1; j++)
{
tmp *= (1 - (i - j)*p);
}
tmp *= ((i - 49)*p);
res += tmp;
}
printf("%lf\n", res);
return 0;
}
啊,这贴过来怎么tab就全被吞了呢......