關於RNG隨機序列的事實
隨機序列不是「混亂」,而是具有可驗證屬性的值流。在遊戲系統中,自旋,分配和乘數的誠實性取決於此流的質量。下面-關於RNG序列應該是什麼以及如何驗證的關鍵事實。
1)獨立比「美麗」更重要"
i.i.d.(獨立且分布相同)是黃金標準。
缺乏可見的模式並不能保證偶然性;相關性和連續性測試而不是「眼睛」測試很重要。
2)分布由協議設置
在「原始」流中,通常假定是均勻的(例如,32位單詞是平等的)。
在遊戲中,均勻的數字會變成事件:插槽字符,來自「虛擬甲板」的地圖,車輪扇區。正確的映射=沒有「死區」和扭曲。
3)時期永遠存在-問題在於其長度
PRNG具有有限周期(周期)。良好的發電機的周期如此長,以至於在實際操作中你不會「繞過」它。
避免「狀態」(state/nonce reuse)匹配是至關重要的,否則子序列將重復。
4)Sid(種子)是不可預測性的根源
不正確的蘋果酒初始化會產生可重復或可預測的輸出。
可靠系統使用多通道熵和周期性恢復(已記錄)。
5)熵與「噪聲」不同"
位熵測量流量的不可預測性。
硬件熵通常由加密DRBG(CSPRNG)消化,以獲得快速而持久的流量。
6) p-values不應該是「美麗」
在測試電池(頻率,系列,「生日」,矩陣等級等)中,p值必須均勻分布在 [0;1]而不是"聚集在0附近。5».
一個「紅色」測試並不能證明問題:考慮多個檢查並重復運行。
7)本地「脫衣舞」不是錯誤
在任何真正的隨機序列中,都會出現群集(長序列零/單位,字符重復)。
車道-正常;系統風險-大窗口的持續扭曲。
8)線性是隱藏的敵人
LCG形式的簡單線性生成器可以進行基本測試,但可以在復雜的(矩陣等級,線性復雜度,DFT)上「散落」。
在遊戲行業中,標準是耐密碼的DRBG(例如,在分組密碼/哈希上)。
9)Mapping必須是固定的,並且必須經過驗證
對匹配表「數字→事件」的任何更改=遊戲的新版本和重新驗證。
良好的做法是用哈希和數字簽名進行硬性映射固定。
10)「幾乎贏家」-關於接口,而不是關於流
近距離小姐是視覺戲劇的一部分;比例和行為由遊戲數學決定。
RNG產生一個數字,界面講述一個故事-這些層必須離婚。
11)可復制性≠可預測性
對於審計,將構造每個回合,以便可以重現結果(ID回合,sid/nonce,哈希)。
這並不能使遊戲時的流量可預測:秘密(sid)和狀態受到保護。
12)「好」序列生活在受監視的銷售中
發布後,監視很重要:RTP是否會收斂到認證的頻率,是否沒有字符,重復和「熱」數字的漂移。
Aleurts穿過急流→隔離標題和技術檢查。
13)狀態和流動-分開
不同的遊戲/桌子/實例使用獨立的RNG狀態。
不能將一個線程劃分為多個產物-出現交叉相關性。
14) Forward/Backward-security比看起來更重要
在損害當前狀態時,良好的CSPRNG不應揭示序列的過去(背靠背抵抗)和未來(前向安全)。
這是通過加密接收器和常規恢復來實現的。
15)「Provably fair」證明是不合適的替代品
Commit-revil(服務器坐標哈希→披露)+客戶坐標使玩家有機會重新計算結果。
這保證了序列的完整性,但並不能替代遊戲和映射數學的審核。
糟糕的一致性是什麼樣子(預兆)
在相同的輸入下,side/nonce重復→重復的結果。
大窗口中的頻率穩定偏移(不是單個星團)。
DFT中可識別的時期,TestU01/BigCrush中的「失敗」。
經驗性RTP從聲稱的合理體積漂移。
好序列是什麼樣子
置信區間內的均勻頻率和連續性;統一的p值。
相鄰元素和獨立元素之間沒有相關性。
經驗RTP/事件頻率與模型的收斂。
生產二進制和認證(哈希控制)之間的零差異。
Mini Spargalki
對於工作室/提供商
使用來自多通道熵的CSPRNG+文檔重組。
按流/遊戲劃分狀態;保持一本無名日記。
追逐NIST/Dieharder/TestU01,再加上在RTP下降之前進行映射的質量模擬。
將映射和二元捕獲到數字簽名;禁止未簽名的版本。
在銷售中調整指數的漂移;隔離和滾動計劃。
對於操作員
將經過認證的遊戲版本和哈希進行核對。
監視RTP/頻率/重播;保持門檻和自動警報。
存儲不變的回合日誌,並能夠通過提卡快速導出。
對於球員
檢查信息屏幕:RTP、規則、版本、最大贏。
不要將群集與「子類」混淆:條紋是正常的。
在爭論中,要求回合ID和摘錄-結果必須重現。
隨機RNG序列是一種工程工件,具有可驗證的特性:獨立性,正確分布,長周期,熟練坐姿和抗損害性。在遊戲中,在質量流與正確的映射和控制程序相連的地方,會產生誠實:發布前的認證,logi和之後的監控。當所有三層都到位時,「隨機性」從承諾轉變為可靠的實踐。