前篇的传送门:
为什么B站专栏代码块没有matlab,只能饶罗翔截图了
Damage_Noel_Ult(穷举伤害计算器):
由于之前在米游社随随便便写了一篇没人看的女仆攻略,我这里的脚本的计算方式和up主的源程序会有小小的出入,不过大体思路相似。在这个过程中,我也发现了UP主1.0版本中存在的问题。源程序中没有考虑到“额外造成伤害”这个独立的伤害机制。这也使得使用1.0版本计算部分武器和圣遗物套装的伤害时会出现误差。
总伤害 = 攻击力×倍率×额外造成伤害×(1+暴击率×暴伤)
多说一句,开服初的莫娜节奏就是因为莫娜的加伤其实是算在额外造成伤害里,而不是单独独立的乘区
话不多说,我还是直接上图吧
穷举伤害计算器Pt.1
顺便提一下,原神圣遗物副词条每次提升幅度都是不一样的,所以完美副词条基本不可能真有你的啊,米哈游 我这里沿用了UP主原来的数值作为计算使用。(这些副词条的提升数值被假设成了主词条提升值的1/10,也方便了接下来的贪心算法)
穷举伤害计算器Pt2.
大家也可以帮我监督下我的注释是不是出了什么问题,有问题的话请务必在评论区指出嗷。
最后两行拼接了原来的三维数组并且根据第一行的数据重新排列了穷举的结果。剩下的排列则为各个主/副词条出现的次数。
贪心算法:
对于贪心算法,本人并没有做太多的研究和改进,仅仅只是注释了下原来的程序。考虑到贪心算法的局限性,即只能找出最优解,我也仅仅只加了注释而已。当然啦,下文中会给大家详细介绍下贪心算法的具体过程以解答可能在读代码时产生的疑惑。
我们假设 a为百分比攻击力,b为暴击率,c为暴击伤害,那么一个最简易的伤害模型为:
a×(1+b×c)
考虑到我们假设了a的涨幅为4.7%,b的涨幅为3.1%,c的涨幅为6.2%,那么每次增长单词条时对于总伤害的提升可以写成以下三个式子:
只提升a(百分比攻击力)时:4.7%*(1+b*c)
只提升b(暴击率)时:3.1%×a×c
只提升c(暴击伤害)时:6.2%×a×b
通过比较这三个提升值,程序会觉得每次面临提升抉择点的时候,该选择哪一个副词条进行提升。重复多次,就是Up主用的贪心算法了。
贪心算法Pt1.
贪心算法Pt2.
结尾:
洋洋洒洒也写了不少字呢,突然也不知道结语写啥了,那大家有建议的话可以在评论区交流下啊,要是对于我的渣代码感兴趣,留个言,我给大家link在评论区里呢