一道简单的BUFF题

发表于2018-06-13
评论16 5.9k浏览

好久不见,这次又带来一道简单的数值题.因为上次被揍,emmm,这次就不皮了.

直接看题目

设定某角色攻速为0.7,即每0.7秒攻击一次.

此时,为该角色装备一个BUFF或者武器,效果为每次攻击有5%的几率触发效果1.

效果1:提升5%输出,持续10,最高叠加5,每次叠加后刷新持续时间.

问题:BUFF能提升角色多少伤害.

大家可以尝试自己解答一遍,得出一个答案后再来看解答过程。

由于本人比较傲娇,所以喜欢直接给出结果:8.8%。但是没关系,现在收手,不要向下滑动屏幕,你依然有机会得出答案的计算过程。因为答案是错的。

皮这一下我很开心。

解答:

(你看,我的解答总是来得如此突然,毫不修饰)

先不考虑断刀或其他情况.

BUFF持续10,攻速0.7,也就是,BUFF持续时间内有14次攻击机会.

14次攻击机会触发BUFF的几率为

那么,我们可以得到每一层BUFF的触发几率和对应的伤害比例为:

BUFF层数

对应概率

对应伤害比例

0

0.027584

1

1

0.512325

1.05

2

0.249848

1.1

3

0.121845

1.15

4

0.059421

1.2

5

0.028978

1.25

这时候,我们将对应的概率和伤害比例之积求和,就得到结果1.088

,BUFF能够提升8.8%的伤害.

一部分人倒在这里

但是

 

我们只求得了每一层BUFF的触发概率,并没有考虑到每一层BUFF存在的平均伤害次数.

因为每一层BUFF最多可以砍出14,所以,我们只需要列出前14刀的概率和BUFF触发分布,如下

刀数N

N刀概率

N刀概率

14刀触发分布

1

0.05

0.05

0.097594

2

0.0475

0.0975

0.092715

3

0.045125

0.142625

0.088079

4

0.042869

0.185494

0.083675

5

0.040725

0.226219

0.079491

6

0.038689

0.264908

0.075517

7

0.036755

0.301663

0.071741

8

0.034917

0.33658

0.068154

9

0.033171

0.369751

0.064746

10

0.031512

0.401263

0.061509

11

0.029937

0.4312

0.058433

12

0.02844

0.45964

0.055512

13

0.027018

0.486658

0.052736

14

0.025667

0.512325

0.050099

 我们对刀数N和前14刀的触发分布概率之积求和,得到触发BUFF的期望刀数6.674

从而得到每一层的平均刀数:

毫无疑义,0层为20,

1-4层为 

5层为

(注意:这里用如果使用积分求出来的是近似值,想要精确些建议数列)

得出结果:

0

20

1

10.2465

2

10.2465

3

10.2465

4

10.2465

5

19.34354

但为了便于理解,我们不采取逐层求解的方式.

所以上面的结果并没有什么用.

 

你懂哒

 

我们将所有的战斗过程分为5:

BUFF叠加到1层消失

BUFF叠加到2层消失

BUFF叠加到3层消失

BUFF叠加到4层消失

BUFF叠加到5层消失

 

每一种过程对应的平均攻击次数为该过程每一层的平均攻击次数之和

列表:

1

34

2

40.6736

3

47.34719

4

54.02079

5

66.03792

每一种过程对应的平均伤害为该过程造成的总伤害比上该过程的平均攻击次数

这里需要注意,以过程一为例,20刀触发了BUFF,已经具有BUFF效果(当然,这是人为规定),也即,19刀无BUFF伤害和15BUFF一层效果的伤害

列表:

1

1.022059

2

1.045083

3

1.068664

4

1.092595

5

1.127543

 

每一种过程出现的概率为简单的概率

列表:

1

0.487675

2

0.249848

3

0.128003

4

0.065579

5

0.068894

所有过程的平均攻击次数为各过程平均攻击次数与出现概率的乘积之和

列表:

1

16.58095

2

10.16222

3

6.060603

4

3.542649

5

4.549626

40.89605

所以,我们计算得出最终的比例约为

Sum(各过程出现的平均攻击次数×该过程对应的平均伤害×该过程的平均攻击次数/所有过程的平均攻击次数)

列表:

1

0.414385

2

0.259692

3

0.158371

4

0.094647

5

0.125438

1.052532

,BUFF提升了角色约5.25%的伤害

这个计算过程并非最简的计算方式,但却是最好理解的计算方式,有兴趣的大佬可以考虑用更简便的方式计算.不过式子最终还是一样的啦.

当然,让我们脱离单纯的数学方法,我们也可以使用程序进行模拟.这里我选择了VBA

算了,太难写了,不写了.

先列下简单的数据

代码如下:

很简单的代码(别问我为什么没缩进,)

为了让数据更精确,我们取运行次数为10000000(取这么大绝对不是为了秀SSD,8Gddr4,i5-7500,反正电脑是公司的...).

运行后,结果为:

得出比例大约在1.053左右

什么,10000000次太少了?

与我们计算得出的结论相近,而非1.088

至于这0.05%的误差来源,我认为是EXCEL保存数据精度的问题.

当然也可能是计算问题,代码或解题过程有误....因为自己解题习惯不好喜欢到处乱写...让我们假装没看见.

一部分...

咳咳,但是...我们一开始设立的前提是无限输出,没有追赶断刀技能等阻碍.

那这个怎么解决呢?

当然是直接给一个10秒内能触发的次数啊!

经过本题,我终于意识到了公式写得再好,也不如程序来得快.

利用以上方法,足够解决目前绝大多数游戏内的概率相关问题.

我是梦幻华策,就是文章上了GAD,有人给我点赞,也绝对不会皮了

真好玩

 

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

标签: