Re: [闲聊] Yasuo Bug?

楼主: ravensweep (可拨仔)   2018-06-19 12:16:21
※ 引述《ericpan70096 (废文初心者)》之铭言:
: 如图,有人知道为什么会有爆击吗= =?
: 主符文:
: 征服者、凯旋、血脉、致命一击
: 副符文:
: 即刻冲击、噬血猎人
: https://i.imgur.com/t2g0vx9.jpg
前提: 小弟不是游戏从业人员也不是资工专业
假设: 不是Bug产生的爆击而是游戏机制的话
猜测: 爆击产生的机制是在每次攻击的时候
随即乱数产生一个介于0到100的数字
然后执行if条件判断
if (RandomNumber 小于等于 CritChance)
then (Critical Strike)
在这个机制下,给定英雄爆击率1%的话:
如果产生的随机乱数是给到整数位(0-100,共101个情况),有0跟1两个情况会爆击,爆击率变成2/101=1.98%
我们继续增加乱数的小数位数,
1位小数的时候(0.0-100.0,共1001个情况),有0.0-1.0共11个情况会爆击,爆击率是11/1001=1.098%
2位小数的时候(0.00-100.00,共10001个情况),有0.00-1.00共101个情况会爆击,爆击率是101/10001=1.0098%
3位小数的时候(0.000-100.000,共100001个情况),有0.000-1.000共1001个情况会爆击,爆击率是1001/100001=1.00098%
4位小数的时候(0.0000-100.0000,共1000001个情况),有0.0000-1.0000共10001个情况会爆击,爆击率是10001/1000001=1.000098%
依此类推可以发现,当乱数的小数位数足够多的时候,程式产生的爆击率近似给定的英雄爆击率
衍生出的问题变成,当给定英雄爆击率0%并且产生的乱数是4位小数,那么有1/1,000,001的情况会产生数值等于0.0000的随机变量,而这个变量在条件判断的时候会判定爆击,换句话说,有大约百万分之一的机率会在英雄0%爆击的时候爆击
当然,乱数的小数位给的越多,这个情况产生的机率越低,又或者,可以多写一个条件判断处理这个特例,但我猜这是一个Trade-off: 是不是有必要为了这个百万分之一甚至更低的情况,在每次攻击的时候都多执行一个if条件判断
大guy4这样
作者: LegendDragon (幼稚的人)   2018-06-19 12:33:00
原来是数学版我以为是lol版。
作者: ericpan70096 (废文初心者)   2018-06-19 12:36:00
我记得r社的是pseudo,好像会有补偿机制感谢回应><

Links booklink

Contact Us: admin [ a t ] ucptt.com