1.简介
PRD是war3计算暴击时使用的伪随机算法,其意义是减少极端事件发生的概率,平衡游戏体验。类似的情形是抽奖等,同样服从二项分布的情景,都可以不同程度上使用基于PRD的伪随机分布作为替代。
2.随机与伪随机
生成服从均匀分布的随机数是容易的,然后通过逆采样变换可以得到服从任意分布的随机数
假设需要生成服从分布的随机数,只需生成 ~ ,令,则,由此变换得到的服从分布F
计算机通过简单采样以外的方法生成的非均匀分布的随机数,都可以理解为是伪随机数
3.PRD算法
一般暴击事件可以用二项分布去描述和建模。例如事件,其概率分布函数为:
其中为单次普攻暴击的概率
在介绍PRD是如何运作之前,我们需要修改一下上述的事件描述,他仍然服从二项分布,事实上就是的情形。事件,其概率分布函数为:
其数学期望记为:
PRD算法:直到下一次暴击之前,单次普攻暴击的概率为,为上一次暴击之后的普攻次数,暴击后重置为1
PRD算法下事件的概率分布函数为:
其数学期望记为:
其中为最大不暴击次数,可由计算
4.代码
已上传到github:https://github.com/Jweeeeee/Dota2_PRD
快速预览:https://nbviewer.org/github/Jweeeeee/Dota2_PRD/blob/main/Dota2_PRD.ipynb