非酋的福音?談一談遊戲內的偽隨機機制以及實現

遊資網發表於2019-05-27
情景一:FGO,新出了一個5%的概率可以抽取saber的卡池,玩家進行踴躍地抽取,如果採用完全的真隨機機制,那麼會出現哪些情況?

歐洲玩家A:抽取10次以內成功就獲得了saber,心滿意足
較歐玩家B:抽取11-20次成功獲得了saber
較非玩家C:抽取21-30次成功獲得saber
非洲玩家D:抽取31-40次才獲得saber
非洲酋長E:抽取41-80次才獲得saber

那麼我們來統計一下,在這次卡池獲得中,各種族玩家的人數假設100個人抽,各抽1次,因為為概率為5%,那麼5個人第一次便抽中,其餘95人抽,同樣5%,那麼95*0.05的人,抽中,以此類推

玩家A 數量 = 0.05+0.0475+….+0.031512  = 40.13%
玩家B 數量 = 0.029+0.02844+…+0.018868 = 24.02 %
玩家C 數量 = 0.017924+…+0.11297       = 14.38 %
玩家D數量 = 0.010732+…+0.00405       = 8.61%
玩家E數量 = 0.03847+…+0.000312       = 11.1 %

我們將此套資料運用在一個10萬玩家投入到了這個活動中的遊戲上,會出現怎麼樣的災難般的場景?



4萬人的歐洲玩家A歡呼雀躍,
2.4萬的歐洲延邊玩家B心滿意足,
1.4萬的非洲延邊玩家C強顏歡笑,
近8600名非洲內陸玩家D失聲啜泣,
以及1.1萬名非洲酋長玩家E的欲哭無淚中,
“圓滿”地結束了此次FGO卡池活動!

實際的運營與開發商,在同等概率的情況下,並不希望有如此極端而真實的概率情況,那麼偽隨機的機制應運而生,同時削減歐洲人和非洲人數量,各種族人數向玩家B和C之間,靠攏,是普遍目前營運商和開發商的普遍做法,那麼如何使用偽隨機機制,才能保證,概率的可控性呢?

數值是解決思路的體現:

希望玩家開始抽的時候,抽到概率較低,每抽一次,如果不中,下一次的概率更高,抽到後,概率迴歸初始值,總體概率與期望相同。重要的是,這個初始值和這個每次概率的累加值,如何確定?才能保證我們的數值的可靠和可驗證性。

偽隨機模型:等差疊加模型

即第一次概率為X,第二次概率為2X,第三次概率為3X….以此類推,最終總體概率為Y確定Y和X,Y為設定的值,假設 Y = 5% ,預估 X的值 ,並將其帶入VBA模擬

  1. VBA參考
  2. Sub test()
  3.     x = 0.22  #X值
  4.     t = 0
  5.     c = 0
  6.     g = x
  7.     Randomize
  8.     n = 10000000 #模擬1000萬次
  9.     For i = 1 To n
  10.     If Rnd < x Then
  11.       x = g: c = c + 1: t = t + 1
  12.       Randomize
  13.       Else:
  14.       Randomize
  15.       x = x + g: t = t + 1
  16.     End If
  17.     Next
  18.     MsgBox "實際概率 = " & c / t #Y值
  19. End Sub
複製程式碼

可得下表

非酋的福音?談一談遊戲內的偽隨機機制以及實現

按照該套計算方法下,我們再次計算情景一中玩家數量,即Y=5%,X=0.00378時

假設10000個人抽,各抽1次,因為為概率約為0.38%,即,38人第一次便抽中,其餘9962人開始抽第二次,這次概率為第一次的2倍,即0.76%,以此類推

玩家A 數量 = 19.00% (<10次)
玩家B 數量 = 36.74% (11至20次)
玩家C 數量 = 28.21%(21至30次)
玩家D 數量 = 12.25%(31至40次)
玩家E 數量 = 0.037%(41至80次)

我們看下兩種的對比圖

非酋的福音?談一談遊戲內的偽隨機機制以及實現

由此可見,較真隨機的機制來比,採用此套偽隨機下,對於玩家體驗有如下提升:

1>體驗最差的D和E類玩家總數降低,體驗最差的E類玩家數量減少了66%
2>總體人數向平均的B和C類玩家靠攏,‘公平性’的感官體驗相對於真隨機來說,有了很大提升

相關文章