关于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和之后的监控。当所有三层都到位时,"随机性"从承诺转变为可靠的实践。