update: 严酷的魔王神牛对这个问题进行了深入的分析,并得出了初步结论,请看这里:http://blog.programet.org/2011/03/同挖坑dota中对有限血量的目标进行攻击的研究.html 前几天和恩勋讨论到这个问题,然后就一直想写个文章验证一下。 讨论问题之前,先看一下我们的模型:无视一切回血、护甲、miss、攻速、技能等,只考虑攻击力和暴击。 其中攻击力有下界x和上界y(都是整数),每次打出的攻击是x和y之间的某个整数值(包括x和y),x和y之间的每一个值都会等概率地出现。 而暴击则是基于攻击力上的随机攻击加成,包括倍率k和概率p两个属性。 这两个属性表示,在英雄的攻击中,有p的概率会是附带攻击加成的,而这个攻击加成导致此次攻击比没有暴击的相应攻击高出了k倍。 上面的描述是给打过DotA的宅男们写的。可能这种描述对于没有打过DotA的MM还是一头雾水,还是从最基本的原理来解释吧。 当然,我下面的解释都是指这个简化模型,和实际的DotA游戏会有不少区别,如果是想学习DotA陪你的GG打游戏的MM,还是不要看这个了,多打几场才是王道……扯远了。 DotA里,英雄是一个玩家控制的基本的单位。英雄本身会有一定的血量和攻击力,还可以进行攻击。被攻击的英雄会失去相当于对方攻击力的血量。 我们假设有两名英雄,英雄A和英雄B。A的血量是1000,攻击力是20;B的血量是200,攻击力是100。 这样,当A攻击B一下之后,因为A的攻击力是20,所以B会失去20的血量。这时A的血量还是1000,而B的血量减少到了180。 然后,再让B攻击A一下。因为B的攻击力是100,所以A的血量变成了900,而这时B的血量是不变的,还是180。 这就是最简单的攻击模型。 当然,为了进一步简化问题,这个模型是不考虑攻速的。也就是说,每次A和B都会同时进行自己的攻击,所以有可能两个人会同归于尽。 下面基于这个描述,再讲解一下攻击上下限和暴击的问题。 所谓攻击上下限,就是说攻击力并不是一个固定的值,而是可以上下浮动的。比如如果有一个英雄C的攻击力下限是20,上限是25,这说明这个英雄在攻击对手的时候,可能打出的实际伤害有:20、21、22、23、24、25。而这六个数值的出现是等概率的。也就是说,每次攻击伤害的数学期望是(20+25)/2=22.5。 而暴击则更复杂一些。我们用英雄A举例,A的攻击力是20。 如果A有一个20%概率的3倍暴击,那就是说: 1.A有80%的可能不打出暴击,这时A对对手造成的伤害依然是20点; 2.A有20%的可能打出暴击,这时A对对手造成的伤害是:20+20*3=80点。 可以发现,A的攻击输出的数学期望变高了。这时A每次攻击造成伤害的数学期望为:20+20*3*20%=32。 当然,攻击上下限可以和暴击组合起来。这时,会先结算攻击上下限部分,确定一个实际攻击力T;再计算此次攻击有没有出现暴击,如果有,在T的伤害基础上加上暴击的伤害。 可以发现,如果我们有两个英雄X和Y,他们每次攻击造成伤害的数学期望是一样的。那么如果他们的攻击目标Z的血量无限,在经过足够长的时间之后,他们造成的总伤害期望也应该是一样的。 但是实际上,DotA的英雄血量并不是无限的。这时就会有一个问题了,让X和Y对打的话,谁赢的几率大一些? 之所以这篇文章是挖坑,那是因为我还没有为这个问题建立好一个数学模型。但是,我已经写了一个模拟的程序,对以上问题进行实验。实验结果如下: 1.英雄A的攻击力稳定为一个值,英雄B的攻击力上下限浮动较大,双方都没有暴击——此时A胜利的几率会更大。 2.英雄A的攻击力和英雄B的攻击力都稳定为一个值,英雄A没有暴击,英雄B有一定倍率的暴击——此时A胜利的几率会更大。 3.英雄A的攻击力和英雄B的攻击力都稳定为一个值,英雄A有一定倍率p的暴击,英雄B有一定倍率q的暴击,p>q——此时B胜利的几率会更大。 从以上三个实验可以看出一个明显的结论,那就是攻击浮动越小(或者说每次攻击力更接近,或者方差更小)的英雄,有更大几率在PK中获胜。 这是为什么呢?直觉上来说,攻击浮动大的英雄更容易打出“浪费”的伤害,所以更容易输掉。但是这只是“直觉”,具体胜利的概率是多少还有待证明。 当然还有很多其它的问题。比如在我把血量调高之后,上面提到的几个实验,双方胜利场次的差距都会缩小。这个是和我们的直觉一致的——在血量为无穷的时候,两个英雄的输出应该是相等的,前文已经说过了。那么,血量对这个实验的影响又有多大呢? 另外,我还想把暴击和攻击上下限浮动统一到一起。大概方向就是,给定自身的攻击力、暴击概率和暴击倍率以及对方的血量,计算出杀掉对方所需要的次数的数学期望。 好了,这样我就把这个大坑挖好了。欢迎任何宅男们抢在我之前来填坑,我会很高兴的。 或许对数学系的同学们来说是没有什么挑战性的课题?希望不是这样吧……真的是的话也不要bs我这个数学白痴,请大方地给出你的证明吧!
2011年03月16日
by sqybi
12 Comments