dota2吧 关注:6,467,201贴子:178,205,868
  • 5回复贴,共1

【机制】关于真随机和伪随机

取消只看楼主收藏回复

一楼祭天。慢慢写。慢慢发


1楼2014-04-27 06:18回复
    6.81的更新。军团的勇气之霎(被动技能)和斧王的反击螺旋(被动技能)在这次更新之后改成了伪随机机制。伪随机和真随机到底有啥区别?这个改动以为着什么?
    以下是我自己的一些理解。希望各位指出我的错误。大家和谐讨论


    4楼2014-04-27 06:27
    收起回复
      2026-09-16 19:02:16
      广告
      不感兴趣
      开通SVIP免广告
      以下。就拿斧王这个英雄来举例。
      对于这个技能。有一点需要提到。就是。是否触发反击螺旋。这个判定并不是在斧王受到伤害的时候才开始判定的。而是敌方(小兵或者英雄)做出了攻击动作的时候。就已经开始了判定。这点相信很多人都知道。对于这点。我的理解是。如果你开启了自动攻击。而且你的周围只有斧王。而且在你的攻击范围之内。那么就算你一直S、。他还是会触发反击螺旋的。
      这个技能。还有一个细节就是内置CD。相信很多人也知道了。1级0.45秒。满级0.3秒。也就是说。不管你人品再怎么好。就算100个兵同时打你。就算你连续触发满级反击螺旋。那一秒最多也就三次。不过触发三次的话。一秒就是615的税前伤害(这个伤害是物理伤害)。还是挺可观的。
      而且好像。。这个技能。就算在斧王被羊了之后(羊刀、妖术之类的)。依旧会触发。印象中是。希望知道的朋友告诉我下。先谢过了
      技能讲完了。下面进入正题


      6楼2014-04-27 06:36
      收起回复
        真随机的意思是。每次被攻击。事件是独立计算的。比如你被一个小兵打的时候。他攻击你一次。你有17%的几率触发。触发就是触发了。没触发就是没触发。这个几率。不对下一次是否触发造成任何影响。也不会受到上一次是否触发的影响。而两个小兵同时打你,每个小兵打一下的时候。你的触发几率应该是1-(1-17%)*(1-17%) = 31%。像这样,单独计算每一次事件,这种情况就叫真随机。
        那么这个17%的触发几率。到底是怎么来的呢?
        可以这么去理解。每次。被小兵攻击一下的时候。系统就会在后台创建一个1-100的随机数。如果这个数字是1-17(包含1和17)。那么就判定为触发反击螺旋。当然。系统也可能设定这个随机数是84-100(包含84和100)的时候触发。但其实是一个道理。这就是所谓的概率。很多概率性的技能(比如FV的时间锁定、CK的人品暴击,都是基于这样的判定原理)。注意!是基于这个创造随机数。然后去验证的原理。
        那么。这个比较,是事先设定好的。也就是,判断是否触发。是参考一个静态(static)的范围。
        这个范围。只和英雄技能有关。和被谁打了、和上一次触发与否、和下一次触不触发都没有关系。


        12楼2014-04-27 06:49
        收起回复
          伪随机的意思是。每次被攻击。触不触发反击螺旋。不光和技能有关。还和上一次触发反击螺旋与否有关。
          说到概率。我想起以前高中化学老师说过的一句话。。“不要想着考试的时候去蒙答案,四个答案,按理说。你蒙对的概率有25%。可当你蒙错了的时候。这个概率还是25%么?那对你来说就是0%”。我不是黑她。,这位老师对我们很好。但是这句话。说的很有问题。概率。其实是一种对未来的预测。只是个预测,而不是一种印证。当这件事情已然发生了。也就不存在预测与否的问题,更不存在概率的问题。概率是先于结果发生的一种预测。比如对于蒙选择题这件事儿。答案出来了。你蒙对就是蒙对。蒙错就是蒙错。不能说你蒙错了,就怨概率:明明是25%。凭什么不是我?这样是没有意义的。但是在你不知道答案的时候。你怎么会知道你蒙的对不对?你当然可能是那25%。也可能是那75%。这里还要提到一个叫做“期望”(Expected value)的东西。这个东西是概率的反比。也就是。概率是25%的时候。你的期望就是4。最简单的解释就是。你做四次的重复试验。那么你肯定能成功。对于蒙选择题这种情况。就是。你蒙了四个答案。你肯定能成功一次。,但是具体你那次能成功?那。。谁知道呢?
          说这个事儿。是想让大家明白,概率是可以用于预测的!而且其中一个主要功能就是预测。而不是让你在一件事儿已经发生之后,回去找“概率”去理论。你说好的转,为什么不转?为什么别人就能像电风扇一样转?我就硬是不转?。概率很无辜的。因为他只能帮你这么多。
          扯远了。说回来DotA。。斧王的反击螺旋是17%的概率。首先,同样的,会产生一个1-100的随机数。但是这个随机数的比较对象,不再是1-17,而是一个动态的数。而每一次,这个事件一旦触发了(就是说斧王出了一次反击螺旋之后),数值会被重置。这个数值,是变动的,我们叫他P(N)。从根本上说,P(N)是一个函数(相信理工科学生会明白)。之所以这么写,是为了表示:首先,他是一个概率(Probability)。而且,这个概率是变动的,数值取决于N。这里的N,代表的是一个次数。一个什么次数呢?就是在上一次触发事件之后,还没有触发的次数。。简单说,就是上一次触发了反击螺旋,然后连续A斧王三次,一直没触发。那么此时,N就是3。
          公式上来说,对于概率事件本身,有一个对应的数字C。这个数字会远远小于概率本身。。比如对应一个25%概率的事件,C的数值就是8.474%。对于一个17%的事件,C大约是4%。
          有了C和N,我们把它们乘在一起,就得到现在这个状况下的P(N)。我对这个的理解是:C是不会变的,会变的是N。而每一次反击螺旋触发的时候,这个数值就会被重置(到最初始的状态,也就是大约4%)。如果反击螺旋没有触发,那么,下一次触发的概率就会更高(因为N变大了)。
          那么,P(N)这个东西,我们用来干嘛?当然是用来预测下一次触发反击螺旋的概率有多少了~
          这就是伪随机的根本原理,看起来有点儿复杂,大家慢慢看。我理解的内容基本就是这样。有问题欢迎留言~我们慢慢讨论:)
          下面对这两种方式做一个简单的比较。再说说两种机制的好处和坏处。


          17楼2014-04-27 07:29
          收起回复
            说到底,这样的机制究竟好在哪儿不好在哪儿?
            简言之,我们可以做如下概括:
            在真随机的机制下,连续触发反击螺旋的这一事件概率,或者说,连续不触发反击螺旋的这一事件概率会稍高于伪随机的机制。
            伪随机机制下,因为每次触发之后,都会让P(N)回归到一个远远低于17%的数值。那么就是说,除非你的人品真的足够好,否则是不太可能连续多次触发反击螺旋的。
            目前,使用伪随机机制的还有(可能不仅限于)如下几个技能和物品:
            英雄技能有:幻刺的大招,虚空的时间锁定,混沌骑士的暴击,鱼人的被动晕,骷髅王的暴击,巨魔的被动晕,剑圣的暴击,火枪的爆头,熊猫的被动闪避和暴击,狼人大招之后的暴击,德鲁伊的缠绕
            物品有:标枪的穿刺伤害(Pierce Damage),金箍棒的被动晕,小电锤的连锁闪电,大电锤的静电冲击和连锁闪电,散华、天堂之戟和双刀的残废,水晶剑和大炮的暴击,小圆盾、穷鬼盾和先锋盾的格挡。
            这里,还要提到,伪随机机制的一种比较有意思的应用,称之为Stacking P(N)。因为伪随机机制下,被动的触发与否,是取决于P(N)的。所以,当你连续几次不触发效果的时候,下一次的概率会相对比较高。好比说,一个出了大炮和隐刀的船长,现在需要你去打团。我们知道,大炮暴击的几率是25%,而隐刀的破隐一击,只要你使用了隐刀,在隐身期间内普攻,那就肯定是会发生的,这是个必然事件,同样,水刀也是一样。然后,你去A几下野怪,好比说,你A了3下,都没打出大炮的暴击,那么你现在就可以开隐刀,等水刀CD转好了,去参团,因为下一刀出暴击的概率将会非常高。而在真随机机制下,这种情况就不会发生,因为你下一刀,暴击概率还是25%,这个数值就在那里,不会发生任何改变。
            不过,我挺有朋友说,在这种情况下,暴击的概率是100%?不知道是真的假的。。这点还希望大家来各抒己见。或者请哪位学计算机的朋友,帮我们答疑解惑。
            以上,


            33楼2014-04-27 08:25
            收起回复