1.簡介
PRD是war3計算暴擊時使用的偽隨機(jī)算法仁连,其意義是減少極端事件發(fā)生的概率满葛,平衡游戲體驗。類似的情形是抽獎等琐驴,同樣服從二項分布的情景俘种,都可以不同程度上使用基于PRD的偽隨機(jī)分布作為替代。
2.隨機(jī)與偽隨機(jī)
生成服從均勻分布的隨機(jī)數(shù)是容易的绝淡,然后通過逆采樣變換可以得到服從任意分布的隨機(jī)數(shù)
假設(shè)需要生成服從分布的隨機(jī)數(shù)宙刘,只需生成 ~ ,令牢酵,則悬包,由此變換得到的服從分布F
計算機(jī)通過簡單采樣以外的方法生成的非均勻分布的隨機(jī)數(shù),都可以理解為是偽隨機(jī)數(shù)
3.PRD算法
一般暴擊事件可以用二項分布去描述和建模馍乙。例如事件布近,其概率分布函數(shù)為:
其中為單次普攻暴擊的概率
在介紹PRD是如何運作之前,我們需要修改一下上述的事件描述丝格,他仍然服從二項分布撑瞧,事實上就是的情形。事件显蝌,其概率分布函數(shù)為:
其數(shù)學(xué)期望記為:
PRD算法:直到下一次暴擊之前预伺,單次普攻暴擊的概率為,為上一次暴擊之后的普攻次數(shù)曼尊,暴擊后重置為1
PRD算法下事件的概率分布函數(shù)為:
其數(shù)學(xué)期望記為:
其中為最大不暴擊次數(shù)酬诀,可由計算
4.代碼
已上傳到github:https://github.com/Jweeeeee/Dota2_PRD
快速預(yù)覽:https://nbviewer.org/github/Jweeeeee/Dota2_PRD/blob/main/Dota2_PRD.ipynb