当前位置:   article > 正文

一种伪随机算法Pseudo Random Distribution(PRD)的高效实现【Java版】

pseudo random distribution

一、背景

        普通的自然随机算法,虽然看似能够实现每个个体获得独立的概率,但是实际业务效果可能大打折扣,具体原因在于自然的随机算法的分布不均匀和天然的随机性,把这个放大业务庞大的用户数据中,体现的更为明显:1,一些重度用户可能玩了多次才可能抽中奖品,太难;一些重度用户玩了多次也没有抽中奖品,然后放弃;一些轻度用户试玩几次都没有抽中,然后放弃;一些初次用户刚来就抽中奖品,随后再抽不中奖品等等。总之,最后对于提升用户数据的效果并不好。

于是一个能在随机性和均匀性之前取得一个良好平衡的随机运算方法,PRD算法也就应运而生了。

而这在游戏中,表现的更为突出,所以诸如一些知名的游戏如暴雪、Dota、War3等,皆应用了Pseudo Random Distribution(PRD)算法,来保证业务数据的高效。

二、Pseudo Random Distribution(PRD)算法原理

PRD算法的表示公示:

P(N) = C * N

N表示当前攻击的次数,P(N)表示当前攻击的暴击率,C为概率增量。如果我们这次攻击产生了暴击,则需要将 N 重置为 1,如果这次攻击没有产生暴击,则 N + 1。

 

为了便于理解,这里直接给出一个具体例子:

设我们当前玩家角色暴击率还是0.5,那么对于 PRD算法,此时的 C = 0.3

此时第一次攻击时的实际暴击几率,即 P(1) = 0.3 * 1 = 0.3,若没有暴击,进行 N + 1,则N = 2<

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/385563
推荐阅读
相关标签
  

闽ICP备14008679号