游戏中除方阵暴击外的所有暴击均为独立概率爆伤加算,方阵暴击概率加算
不考虑伤害上限的情况计算过程,没啥意思− 数理统计 ...
我们假设武器盘中有n把暴击率为P,暴击伤害加成为C的方阵树枝,则暴击收益为:
同模型下老王树枝收益为:
上式可化简为
易得第一部分根据二项式定理恒为1,第二部分为二项分布X~B(n,P)的期望E(X)=nP,即:
两期望相等。
结论:不考虑伤害上限时两种树枝暴击收益完全一致。
伤害衰减的情况考虑典型44W伤害上限建模,假设不存在其他暴击来源,在无衰减基础伤害1k-600k的区间上以1k为间隔取测试点,在每个点取n=6,P=0.11,C=0.5进行一百万次测试
− 关键代码,真的丑 ...
openmp救我狗命
Code c:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
double f(double x) {
double t;
if (x > 300000) {
if (x > 400000) {
if (x > 500000) {
if (x > 600000) {
t = 445000 + 0.01*(x - 600000);
}
elset = 440000 + 0.05*(x - 500000);
}
else t = 380000 + 0.6*(x - 400000);
}
else t = 300000 + 0.8*(x - 300000);
}
else t = x;
return t;
}
int main() {
srand(time(NULL));
omp_set_num_threads(8);
Mat v(Size(600,1000), CV_8U, Scalar(0));
int i, j, k;
for (i = 1000; i < 600000; i += 1000) {
int t = i / 1000;
r = f(i*1.5)*0.11*n + f(i)*(1-0.11*n);//r = f(i*(0.11*1.5*n + (1-0.11*n)));
double tr; double sum = 0;
#pragma omp parallel for schedule(dynamic,1000) private(tr,j) reduction(+:sum)
for (k = 0; k < m; k++) {
tr = 1;
for (j = 0; j < n; j++)
if ((rand() % 100) < 11) tr += 0.5;
tr *= i;
sum += f(tr);
}
r = sum / m;
r /= f(i);
r /= f(i);
}
return 0;
}
绘出下图:
图中浅色曲线为老王树枝,深色曲线为方阵树枝。
当然这个曲线也可以求出解析式,只不过没有模拟来的方便
结论:如图。
页:
[1]