关于赛尔号伤害计算公式的一个小知识以及计算器中的一些错误

本文仅讨论本人所发现的一些小问题,实验次数有限,过程较为简单,因此可能有疏漏以及错误,欢迎指出。
如果你打开浏览器搜索赛尔号伤害计算公式,你可能会得到这个结果:
(0.84×攻击方攻击/防御方防御×技能威力+2)×克制系数×本系加成1.5×(0.85~1)
本专栏所讨论的地方就在于上述公式中标红部分,即浮动参数。
实际上我们知道,相比于上式,赛尔号伤害计算公式更准确的写法应为:
(0.84×攻击方攻击/防御方防御×技能威力+2)×克制系数×本系加成1.5×(217/255~1)
通过这个式子我们可知,游戏内的伤害计算公式中,攻击方攻击、防御方防御、克制系数以及是否有本系加成都是固定参数,当对线双方精灵面板、特性、技能威力以及宝石明确时,得出的最大伤害值是固定的,那么进行一次攻击后,我们所看到的最终伤害值唯一的悬念就取决于浮动参数,即217/255~1。
为了方便测试公式在游戏中的具体体现,我选择了草系和自然冰两个属性分别作为被攻击方和攻击方,因为克制系数高,最终所得结果更高,当浮动值取不同参数时,差距更大,更方便观测并得出结论。以下是两只精灵的面板,双方均无任何增减伤。


艾丝可玲使用150威力的刺骨寒气,以下为计算器得出的计算结果:

以下为一部分测试结果:
1611——对应情况为1842×223/255=1610.84
1791——对应情况为1842×248/255=1791.43
1770——同上,1842×245/255=1769.76
1625——1842×225/255=1625.29
1582——1842×219/255=1581.95
1690——1842×234/255=1690.31
1741——1842×241/255=1740.87
从上述结果不难看出,伤害的最终数值不同于游戏内精灵面板数值,在精灵面板计算中,某项面板的最终结果若不是整数,则多余的小数部分不管多高都会直接舍去。根据上述结果可知,游戏内的伤害计算是明显存在四舍五入的情况的。
除此之外的一点就是很多计算器的伤害计算浮动以及击杀概率的误差,很多计算器在计算击杀概率时,会直接按照伤害浮动上下值的差作为分母,并将满足击杀的最低数值以及以上部分作为分子,直接得出击杀概率。然而根据我个人的测试,最终伤害在游戏内的表现也是最高伤害的结果在217/255~255/255中随机乘以一个分数,即只有39种结果,而非完全随机的数值。简单来说,比如上述例子中最高伤害是1842,当浮动为254/255时,伤害值为1835,浮动为255/255即最高浮动时,伤害值为1842,那么在1835-1842之间的几个伤害数值则不会出现,也就是上述对线情况不会打出1836、1837这种处于相邻的两个浮动值区间内的伤害。
目前的伤害计算器中存在的误差就在于,每一次进行伤害模拟会直接随机取伤害范围内的任意一个整数,经过我的个人测试,这种方法计算出的某些结果在游戏中无法得出,比如下面的模拟结果:

那么由于伤害取量存在些错误,计算击杀结果也会相应的出现一些问题:
为了更直观的看出问题,以下模拟选择的是650特攻精神乌拉强化+1,6级威力神秘石打545特防坚硬,1040体力的星皇,可以看到最高伤害浮动为1041,击杀概率为0.65%,然而实际上,如果按照伤害计算公式的计算方式来看,能击杀的情况只有一种,即伤害浮动最高,1041×255/255=1041这种情况,也就是分子在217~255这段区间中,必须取到255这一种情况,那么可知击杀率则为1/39=2.56%,而非0.65%,同理,若上述说法正确,则游戏中其他各种情况的击杀率也都按照x/39去计算结果,x即为满足击杀条件伤害的浮动参数数量,比如最后一张图中模拟展示的结果,若有粉白则要减去后再进行计算。



本专栏讨论的问题在实战中可能影响不大,也很少有人会在乎击杀率、浮动值的一些微小差别,但我认为即使简单也是有讨论的必要的。计算器存在的伤害计算问题还有弱化等级计算错误等等,已经被其他玩家所发现。因此在游戏中,也要联系实际再根据已有知识去探索、讨论,也正是因为一直有玩家能做到遇到实际问题后去思考和测试,才能发现游戏中的各种判定问题。