用Python模拟计算猎魔人的百步穿杨效果
猎魔人有个很出名的被动技能叫做“百步穿杨”,它的效果是暴击率每秒增加 3%,暴击后 1 秒重置到初始暴击率。
不过我用它的时候很纳闷,它对暴击率的平均提升到底有多少呢?数学很糟糕的我决定还是用 Python 模拟计算一下吧。
这里假设是站桩连续输出,边打边风筝虽然能提高暴击率,但因为攻速慢了,DPS 肯定更低。(所以我喜欢弩,射一箭后走一步,等 CD 好了再射,不怎么影响 DPS。)www.zzzyk.com
from random import random
attack_speed = 1.1
init_critical_chance = 0.05
attack_times = 0
critical_times = 0
attack_duration = 1 / attack_speed
critical_chance = init_critical_chance
last_time = 0
current_time = 0
for i in xrange(100000):
was_critical = False
while True:
if int(current_time) > int(last_time): # 距上次攻击或暴击时间已过 1 秒
if was_critical:
critical_chance = init_critical_chance
last_time += 1
break
else:
critical_chance += 0.03
attack_times += 1
if critical_chance > random():
critical_times += 1
if not was_critical:
current_time = last_time = int(last_time) # 暴击后用 last_time 表示暴击时间
was_critical = True
continue
if was_critical:
current_time += attack_duration
else:
current_time, last_time = last_time + attack_duration, current_time
print float(critical_times) / attack_times - init_critical_chance
以 1.1 攻速的弩为例,初始暴击率为 5%,那么百步穿杨相当于提升了 7.5% 的暴击率;而如果初始暴击率为 30%,则只提升 2.3%;而如果是 1.4 攻速的弓,则只提升 6.4%。
不过,土豪们都会堆暴击率和攻速,而随着这两个属性的增加,百步穿杨的效果是递减的。例如 2.5 攻速,40% 初始暴击率,则只提升 0.4%,约为初始值的 1%,几乎可以忽略了。
当然,如果不是土豪的话,用它倒还不错,毕竟暴击率叠到 100% 后可以尽情输出 1 秒,如果 DPS 和爆伤高的话,可以秒大多数怪了。
作者: keakon
补充:Web开发 , Python ,