像素騎士團常規(guī)技能發(fā)動率
時間:2014-12-16 11:17:34 來源:k73電玩之家 作者:無息戰(zhàn)歌 熱度: 135 次
《像素騎士團》關于常規(guī)技能發(fā)動率按算術加法疊加這里進行了測試計算,在游戲中招募價格更新之后更是抽到了很多價廉物美的人物,所以這里就以限發(fā)動一次的呂布去掉之后做一些相關的測試。
《像素騎士團》關于常規(guī)技能發(fā)動率按算術加法疊加這里進行了測試計算,在游戲中招募價格更新之后更是抽到了很多價廉物美的人物,所以這里就以限發(fā)動一次的呂布去掉之后做一些相關的測試。
實驗目的:測試技能發(fā)動率的計算方式。
實驗猜想A:普通技能滿足發(fā)動條件時發(fā)動率按概率乘法疊加
實驗猜想B:普通技能滿足發(fā)動條件時發(fā)動率按算術加法疊加
實驗材料:
【1】主角裝備宿命鍛鐵錘,24%無條件發(fā)動
【2】3只長弓射手,每只7%無條件發(fā)動
【3】路西法,13%無條件發(fā)動
【4】趙子龍,12%無條件發(fā)動
【5】黑色屠殺者,12%無條件發(fā)動
【6】大天使米色爾,4%無條件發(fā)動
【7】赤眼阿菲德,14%無條件發(fā)動
以上共9人,不觸發(fā)任何組合技
以上9人,發(fā)動率算術加和為100%
以上9人,若按概率乘法,所有技能都不發(fā)動的概率,也即普攻概率為
0.76 × 0.93 × 0.93 × 0.93 × 0.87 × 0.88 × 0.88 × 0.96 × 0.86 = 34%
實驗步驟:
自己與自己對戰(zhàn),記錄每回合技能釋放及普攻情況。
實驗記錄:
致命揮舞-11111-11111-11111-11111-11111-11111-11111-11111-11111-11111-11
要害射擊-11111-11111-11111-11111-11111-11111-11111-11111-
末日燃燒-11111-11111-11111-11111-11111-111
流星★突-11111-11111-11111-11111-1111
靜脈切割-11111-11111-11111-11111-11
天使一閃-11111-1
噩夢凝視-11111-11111-11111-11111-11111-111
普通攻擊-
實驗統(tǒng)計:
總回合數(shù)-200回合
致命揮舞-52次,占26%
要害射擊-40次,占20%
末日燃燒-28次,占14%
流星★突-24次,占12%
靜脈切割-22次,占11%
天使一閃-06次,占03%
噩夢凝視-28次,占14%
普通攻擊-00次,占00%
實驗總結:
如果說猜想A是正確的,那么本該 34% 概率出現(xiàn)的普攻卻連續(xù) 200 次沒有出現(xiàn)。這種情況發(fā)生的概率僅有
0.66^200 = 8/10000000000000000000000000000000000000(即10的37次方分之8)
所以結論是,猜想A是錯誤。猜想B是正確。也就是說,10 只 Saber 無普攻。其實這是很早就有的結論了,只是我一直不信。
結果昨晚在群里看到有人討論組合技能發(fā)動的問題,扯到了常規(guī)技能的發(fā)動率上。有人告訴我就是加法疊加,我打死不信,難道我概率和編程是白學的嗎?于是我自己就來做實驗了。最后成功將自己打臉。
說白了還是程序員怎么編程的問題。一般來說,如果要我來寫,我肯定會寫成這樣:
從首位英雄開始依次往后。若有滿足發(fā)動條件的技能,則進行發(fā)動判定,擲骰一次。(比如發(fā)動率10%,就產生0-99隨機數(shù),若為0-9則發(fā)動,其余值則不發(fā)動)若發(fā)動則回合結束,若不發(fā)動則向后移位,對下一個滿足發(fā)動條件的技能進行發(fā)動判定,擲骰一次。
如果是這樣的話,那就是概率乘法疊加了。兩個10%發(fā)動的技能總發(fā)動率會是19%。但是事實上程序員不會這么寫。因為這樣寫,每回合戰(zhàn)斗,為了判定一支隊伍是否發(fā)動技能、發(fā)動哪個技能,都要進行多次擲骰。而整個服務器運行過程中,發(fā)生戰(zhàn)斗的次數(shù)、總回合數(shù)是非常多的,這樣每回合都進行多次擲骰與判定會給服務器增加很大的負擔。
所以實際上程序員采用了這種算法:
從首位英雄開始依次往后。若有滿足發(fā)動條件的技能,則對應它的發(fā)動率,給其分配判定值。(比如有兩個10%發(fā)動率的技能,那么給第一個分配0-9,第二個分配10-19)若所有滿足條件的技能都分配了判定值,還沒用完100的話,剩下的分配給普攻;(比如有兩個10%發(fā)動率的技能,那么給第一個分配0-9,第二個分配10-19,普攻分配20-99)
若100已經分配完畢,則排在后面的溢出發(fā)動率不加入判定。(比如有三個60%發(fā)動率的技能,那么給第一個分配0-59,第二個分配60-99,第三個不分配)分配結束后,一次擲骰,產生1-100隨機數(shù)。按照隨機數(shù)判定釋放那個技能或普攻。
使用這樣的算法,每回合只用進行一次擲骰。服務器負擔減小的不是一點兩點。
這樣一來,技能發(fā)動率就成了算術加法疊加,兩個10%發(fā)動的技能總發(fā)動率會是20%,也就是 10 只 Saber 無普攻。而且也可以看到,只要發(fā)動率不溢出,英雄排列順序對發(fā)動率而言,事實上是毫無意義的。
上面的實驗統(tǒng)計也證明了這一點。英雄排列順序只對于發(fā)動率溢出的情況有意義而已。比如上面的例子,如果你有兩個60%的技能擺在最前面,那么第一個發(fā)動率是60%,第二個是40%,擺在其后所有技能全部不發(fā)動。
最后,本實驗刻意規(guī)避了組合技能(事實上我平時是4弓手隊),因為組合技能的發(fā)動需要再進一步討論。
熱門新聞
我要評論 查看全部評論 (1)>>
k73玩家2015-08-25 09:10:53評論 (5) (0) 回復
我也在想編程的事情怎么可能不是概率乘法啊.....原來還可以這樣編寫!