G A M E S H A R K
文|遊鯊遊戲/圖| 網絡/原創
遊
戲
設
計
中
常
用
的
概
率
分
布
概率在遊戲中應用非常廣泛,開箱、抽卡、道具掉落的背後都有一套複雜的概率模型在支撐。而且遊戲追求的是玩家覺得公平,而不是絕對公平。因此在遊戲設計中不能完全遵守某一種既定概率分布,需要對概率模型進行不斷的調試。本文就來介紹幾種常見的概率分布,及其在遊戲中的應用。本文偏數值理論,了解即可。
1
、二項分布
二項分布是指在只有兩個結果的n次獨立的伯努利試驗中,所期望的結果出現次數的概率。在單次試驗中,結果A出現的概率為p,結果B出現的概率為q,p+q=1。那麼在n=10,即10次試驗中,結果A出現0次、1次、……、10次的概率各是多少呢?這樣的概率分布呈現出什麼特徵呢?這就是二項分布所研究的內容。維基百科
擲一枚硬幣出現正面和反面的概率各為0.5,那麼擲1次,出現正面的概率肯定是0.5。擲2次、擲3次呢?
擲2次出現的結果有4個,正正、正反、反正、反反。因為p=0.5,所以每個結果出現的概率是0.5×0.5=0.25,那正面出現2次、1次、0次的概率分別是0.25、0.5、0.25。
擲3次出現的結果有8個,每個結果出現的概率是0.5×0.5×0.5=0.125,那正面出現3次、2次、1次、0次的概率分別是0.125、0.375、0.375、0.125。
統計學家們總結出了計算概率的一般公式:
其中b表示二項分布的概率,n表示試驗次數,x表示出現某個結果的次數。是組合,表示在n次試驗中出現x次結果的可能的次數。如10次試驗,出現0次正面的次數有1次,出現1次正面的次數有10次,……,出現5次正面的次數有252次,等等。其計算也有一個通式:
二項分布在遊戲中使用的很多,比如抽卡系統。一般策劃會設定抽到xx卡的概率是多少,這個進行n次抽卡,抽到幾張xx卡的概率分布函數就是二項分布。根據定義可知,在二項分布中,n次試驗中正好得到k次成功的概率由概率質量函數給出:
那麼怎麼測試這張卡被抽中的概率呢?這裡看一個例子,下圖分別是概率為0.1的事件在10,100,500和1000次的事件中的出現次數的概率分布。
可以看到隨著試驗次數的增多,中間的峰越窄,事件發生的次數越向真實概率集中,可以預見的,我們測試抽卡次數越多,所得到xx卡的數量就越接近於它的本身概率。
2、
泊松分布
Poisson分布,是一種統計與概率論中常見的離散概率分布,由法國數學家Siméon-Denis Poisson在1838年發表。其適合於描述單位時間內隨機事件發生的次數的概率分布。如某一服務設施在一定時間內受到的服務請求的次數,電話交換機接到呼叫的次數、汽車站臺的候客人數、機器出現的故障數、自然災害發生的次數、DNA序列的變異數、放射性原子核的衰變數、雷射的光子數分布等等。維基百科
泊松分布對應的是二項分布的極端情況,當二項式分布的次數n很大,而發生的概率p很小時,就可以使用泊松分布代替二項式分布,具體來說,它的成立需要滿足三個條件
1.事件是小概率事件
2.事件是獨立的,不會互相影響
3.事件發生的概率是穩定的
先來看一個例子(引自「阮老師談泊松分布」):
已知某家小雜貨店,平均每周售出2個水果罐頭。請問該店水果罐頭的最佳庫存量是多少?
假定不存在季節因素,可以近似認為,這個問題滿足以下三個條件:
(1)每個顧客購買水果罐頭是小概率事件(顧客的數量很多)。
(2)購買水果罐頭的顧客是獨立的,不會互相影響。
(3)顧客購買水果罐頭的概率是穩定的。
在統計學上,只要某類事件滿足上面三個條件,它就服從"泊松分布"。
泊松分布的公式如下:
各個參數的含義:
P:每周銷售k個罐頭的概率。
X:水果罐頭的銷售變量。
k:X的取值(0,1,2,3...)。
λ:每周水果罐頭的平均銷售量,是一個常數,本題為2。
根據公式,計算得到每周銷量分布:
從上表可見,如果存貨4個罐頭,95%的概率不會缺貨(平均每19周發生一次);如果存貨5個罐頭,98%的概率不會缺貨(平均59周發生一次)。
泊松分布在遊戲中主要用於道具掉落。已知某珍惜道具,平均每周掉出2個,請問該在每周掉出多少個時設置報警?看到這裡,是不是立馬就得出了答案?因為遊戲中,玩家的行為是未知的,就算知道了道具掉落的概率,也很難在實際中計算玩家得到道具的概率,這個時候,只使用平均每周掉出2個這一項數據,就可以根據泊松分布計算出概率分布,從而確定掉落大於多少時是小概率事件。
3、
指數分布
在某遊戲抽卡系統中,策劃填了設置SSR被抽中的概率是5%,策劃說,設置5%是為了給玩家抽卡20次就抽中一次的體驗。但是遊戲上線後,許多玩家在抽卡時抱怨臉黑,很難抽到SSR,而又有一部分玩家反應運氣好能連著抽到紫卡,和策劃20次中一次的預期不符。項目組第一反應是遊戲中出現了bug,但是一直排查不到,這時,程序靈機一動,寫了一個模擬抽卡的程序,並畫出了圖,也就是下圖,下圖為概率5%,模擬50000次隨機得到的結果:
上圖中紅色的是分布圖,X軸是出現次數,Y軸是抽中SSR間隔。而綠色的圖是概率分布圖,X軸是間隔數,Y軸是概率。
按策劃的想法,5%概率應該等同於20次出現一次,那上圖很明顯並不滿足20次出現一次出現規則,實際間隔從近到遠呈下坡形狀分布,就是說相鄰的概率最大,間隔最大超過160,這與玩家所吐槽的抽卡體驗是一致的。但50000次隨機總共出現了2508次,從統計的意義上來說又是符合5%概率的。
所以這個問題,究其原因就是所謂的概率是統計意義上的還是分布意義上的問題。
這裡,就需要介紹另一個分布:指數分布。
指數分布(Exponential distribution)是一種連續概率分布。指數分布可以用來表示獨立隨機事件發生的時間間隔,比如旅客進入機場的時間間隔、打進客服中心電話的時間間隔、中文維基百科新條目出現的時間間隔等等。維基百科
指數分布是固定概率事件的出現間隔的概率分布,應用到抽卡中,就是兩次抽中xx卡之間間隔抽卡次數的分布。它的分布大概是這樣的:
可以看到,這個曲線和上文的綠色曲線大致吻合,這說明遊戲的實現沒有錯,設置5%的抽中概率,就是會得到這樣的間隔分布曲線,所以,錯的是那個項目組策劃的想法:5%概率應該等同於20次出現一次。而且,在抽卡系統中,不論SSR被抽中的概率設置的多小,連續抽中的概率總是相對較大的。
那麼,這個問題要怎麼解決呢?這就需要引入random shuffle算法,也叫洗牌算法,是一個用來將一個有限集合生成一個隨機排列的算法,這個算法生成的隨機排列是等概率的。具體講解,敬請請期待下篇文章。