取一定范围内随机小数 c_算伪随机概率中C值的快捷方法
目前計算偽隨機概率C值的方法,一般是二分法。二分法是個非常討厭的方法,因為雖然簡單卻麻煩,想算個稍微精確點的數,需要十分巨大的計算量。如果像高中時那樣手動計算,真是要算到眼花。
本文給出了一個十分簡單快捷的方法,來計算C值,無需編程,僅需一個excel表就行。
注:前面幾段是本方法的理論依據證明,如果嫌字多,可以直接跳到"用Excel表算C值"那一部分開始看。不過如果你直接跳到那一段看,不一定能看懂,O(∩_∩)O哈哈~
偽隨機概率簡單介紹
我們拿dota白牛的被動暈來舉例:17%概率重擊。為什么不拿劍圣來舉例?已經有人用劍圣算過了,我要是還用劍圣算,難免有借別人結論胡說八道的嫌疑。
白牛第1次重擊的概率為c;
若白牛第1次未重擊,則第2次重擊概率為2c;
若白牛第2次未重擊,則第3次重擊概率為3c;
........
當nc≥1時,必定重擊。
每次重擊之后,下次攻擊重擊概率變為c。
算出重擊次數的期望值=
所對應的c值,即可。從上面可以看出:偽隨機概率中說的“17%概率”并不是真的每下攻擊的重擊概率都是17%,而是一個不斷增加的概率,滿足重擊次數期望值為
。數列的方法算C值
根據上面介紹,于是我們有了常規計算思路:
白牛第1下 就 重擊的概率=c
白牛第2下 才 重擊的概率=2c
(1-c)白牛第3下 才 重擊的概率=3c
(1-c) (1-2c).....
白牛第n下 才 重擊的概率=nc
(1-c) (1-2c)....[1-(n-1)c]于是這個問題就轉化為如下數列問題:
已知數列{
}的通項公式為 = c (1-c) (1-2c)....[1-(n-1)c],求數列{ }的前n項和公式 。我們算出
之后,根據方程組: = ,n=[ ]+1,可以算出c的值。(注:[ ]為向下取整符號)不過可惜的是這個前n項和公式似乎無法算出。退一萬步講,就算可以算出,
= 也將是個高次方程,我們知道常規一元五次方程以上是沒有根式解的。所以,我們想通過這種方法算出C的精確數值是不可能的。沒辦法,我們只能使用二分法了。二分法算偽隨機概率C值
令
=0.0001,那么:白牛第1下就重擊概率
=0.0001;白牛第2下才重擊概率
=0.0002 (1-0.0001);白牛第3下才重擊概率
=0.0003(1-0.0001)(1-0.0002)....
此時重擊次數期望值E=1
+2+3+....+10000 >所以c>0.0001。
取
=0.15,重復上面步驟,可得此時E<。所以c<0.15
取c=(0.0001+0.15)/2=0.07505,重復上面步驟得此時E<
。取c=(0.0001+0.07505)/2
重復上述步驟......直到E非常接近
時,這時的c值即為所求。我就不算下去了,因為計算量太大了,總共可能要我算幾百萬個小數相乘啊,累!
接下來我介紹一個非常簡便快捷的算C值的方法。
用EXCEL算C值
如下圖:具體如何編輯Excel中各列單元格已經寫在圖中了。
我們改動F2單元格的數值,使得G2單元格接近17%,則F2單元格此時的數值即為C值。
例如:白牛的17%概率重擊對應的C值就是0.04092
解釋一下這個表格的意思:
F2單元格:表示C值。
在這里手動輸入C值,使得G2單元格的數值滿足你的精確度需求時,就是我們想要算的那個C值。
G2單元格:表示F2單元格對應C值的面板暴擊概率。
說的很拗口,舉個例子,相當于dota里白牛的“17%”。
A列:記錄次數。
A2單元格數值為1。
從A3單元格開始,如果A列上一單元格為0,則當前單元格也為0。
如果A列上一單元格不為0,并且A列上一單元格<1/c,那么當前單元格為上一單元格+1。
如果A列上一單元格不為0,并且A列上一單元格≥1/c,那么當前單元格為0 。
為什么這樣?因為在偽隨機概率下,當前次數暴擊的概率=當前次數*C,當當前次數的暴擊概率≥1時,必定暴擊。因此若上單元格≥1/c,那就說明上一次的暴擊概率≥1,已經必定暴擊了。
B列:記錄當前次數的實際暴擊概率。
實際暴擊概率=當前次數*C值
C列:記錄當前次數不暴擊的實際概率。
不暴擊的實際概率=1-實際暴擊的概率
D列:記錄首次暴擊發生在當前次數的概率。
首次暴擊發生在當前次數的意思是:之前所有次數不暴擊、而當前次數暴擊。也就是前面一段"數列法算C值"中的
偽隨機概率的特點
1、dota里說白牛的重擊概率是17%,但是實際上白牛第1下打出重擊的概率只有4%。
運氣再怎么差的人,25下也必定會觸發被動暈,不過這種情況非常少見,只有50億分之一。
2、偽隨機概率下,在5-6下左右第一次出重擊的幾率最大。上來就重擊或者10多下才重擊的概率較小,遷就了玩家的錯誤認知。(沒辦法糾正玩家的思維,只能遷就他們的思維了)
而自然概率下,第1下第一次出重擊的概率最大,往后越來越小。
總結
以上是生活随笔為你收集整理的取一定范围内随机小数 c_算伪随机概率中C值的快捷方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iphone打字怎么换行_iPhone电
- 下一篇: python画国际象棋_python图形