用Python模拟计算猎魔人的百步穿杨效果
2012 6 15 02:49 PM 3361次查看
不过我用它的时候很纳闷,它对暴击率的平均提升到底有多少呢?数学很糟糕的我决定还是用 Python 模拟计算一下吧。
这里假设是站桩连续输出,边打边风筝虽然能提高暴击率,但因为攻速慢了,DPS 肯定更低。(所以我喜欢弩,射一箭后走一步,等 CD 好了再射,不怎么影响 DPS。)
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
不过,土豪们都会堆暴击率和攻速,而随着这两个属性的增加,百步穿杨的效果是递减的。例如 2.5 攻速,40% 初始暴击率,则只提升 0.4%,约为初始值的 1%,几乎可以忽略了。
当然,如果不是土豪的话,用它倒还不错,毕竟暴击率叠到 100% 后可以尽情输出 1 秒,如果 DPS 和爆伤高的话,可以秒大多数怪了。
2012年7月20日更新:
原算法和游戏不符,详见评论。
from random import random
from math import ceil
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
reset_time = 0
critical_chance = init_critical_chance + 0.03
while True:
if int(current_time) > int(last_time):
if was_critical and current_time >= reset_time:
break
else:
critical_chance += 0.03
attack_times += 1
if critical_chance > random():
critical_times += 1
if not was_critical:
current_time, last_time = last_time + attack_duration, current_time
reset_time = ceil(current_time) + 1
was_critical = True
continue
current_time, last_time = last_time + attack_duration, current_time
print (float(critical_times) / attack_times - init_critical_chance) * 100
上述的五种情况分别提升 12.7%、9.4%、11.6%、8.8% 和 7.5%。虽说随攻速和初始暴击率上升而递减,不过幅度很低,即使高富帅也有很不错的提升。其实用 JavaScript 写可能更方便那些没装 Python 的玩家,不过我就偷懒不写了…
向下滚动可载入更多评论,或者点这里禁止自动加载。