崩盘游戏的随机性,来自一个伪随机数生成器(PRNG)。现代的伪随机数生成器,只要种子设得好,产生的数列在任何实际用途上,用统计都分不出和真正的随机有什么不同。这篇讲伪随机数生成器在崩盘游戏里怎么运作、「种子设得好」是什么意思,以及如果没人盯着,一个作弊的平台怎样照样能让检查通过。
伪随机数生成器是什么?
伪随机数生成器(PRNG)是一种算法。你给它一个起始值,叫种子,它就产生一长串看起来随机的数字。「伪」的意思是,这些数字不是真正随机的:同一个种子,同一个算法,每次都会产生一模一样的数列。但如果你不知道种子,就分不出它的输出和真正的随机有什么不同。
每一款崩盘游戏都用伪随机数生成器。它每局产生一个数字,这个数字再变成爆点。具体用哪种算法,每款游戏不一样。大部分可自行验证的做法,建立在 HMAC-SHA256 或一串 SHA-256 哈希上。靠实验室认证随机数生成器的游戏,比如 Spaceman 和 High Flyer,不公布它们用的算法,替它作保的是实验室的证书。
伪随机数生成器的质量非常重要。一个弱的伪随机数生成器,比如熵很低、循环很短,或者输出可以预测,可能让攻击的人从观察到的过去几局,预测出以后的局。一个强的伪随机数生成器,让这件事在计算上做不到。
「强」在实际上是什么意思:像 HMAC-SHA256 这样的密码学伪随机数生成器,用 256 位的熵做种子,没办法靠一个一个试种子破解:可能的种子大约有 10^77 个,远远超过现有任何电脑能搜的范围。在实际用途上,种子设得好的密码学伪随机数生成器,输出和真正的随机分不出来。
崩盘游戏怎样把一个随机数变成倍数?
从随机数变成爆点,靠的是一条特定的数学公式。这条公式的设计,是要产生目标分布,也就是让崩盘游戏能当成赌博产品运作的那个形状。
目标分布:在庄家优势是 h 的崩盘游戏里,爆点 m 来自这样一个分布:升到至少 m 的机会,大约是 (1-h)/m。这会产生:
- 很多低的爆点(庄家优势 3% 的游戏,大约 50% 低于 2.0×)
- 越高的倍数越少
- 偶尔出现的极端数值(100×、500×、1000× 以上)
一个简化的转换例子:
1. The generator produces a 256-bit hash:
"a7f3b2c1d4e5..."
2. Part of the hash is read as a large integer and scaled
to a uniform number U between 0 and 1.
3. The formula applies:
multiplier = (1 - house_edge) / U
multiplier = max(1.00, floor(multiplier × 100) / 100)
4. Result: for example, crash point = 2.47×
(上面的步骤:生成器产生一个 256 位的哈希;把哈希的一部分读成一个大整数,缩放成 0 到 1 之间的均匀随机数 U;套用公式;得到一个爆点,比如 2.47×。)
具体的公式,每款游戏不一样。在可自行验证的游戏里,它写在公平性说明里,所以揭晓的种子可以重新算回结果。Aviator 是可自行验证的;它的服务器种子,可以拿来和开局前显示的哈希对比。在先公布哈希的游戏里,比如 JetX,会公布结果的哈希,但不公布从哈希到结果的公式。在第三方认证随机的游戏里,比如 Spaceman,两样玩家都看不到。
用这条公式,再往下取到小数点后两位,所有低于 1.01× 的结果都会显示成 1.00×,所以一开局就结束的局,比例大约是 h + (1 − h)/101:设计返还 99% 的游戏大约是 2%,97% 的大约是 4%。有些游戏另外加一条秒崩规则。不管哪种,庄家优势都已经算进转换里了,其余的局就是大家熟悉的崩盘游戏形状:很多低的结果,加上一条很长的高倍数尾巴。
Aviator 的哈希怎样换算成倍数?
很多人搜「怎样把 Aviator 的 SHA-256 哈希换算成倍数」。其实倍数不是从 SHA-256 算出来的。SHA-256 是承诺:开局前先公布服务器种子的指纹,事后就没法偷换种子。倍数来自开局后算出的 SHA-512 哈希。下面是 Aviator 用的步骤。2026 年 10 月,实验室用这个方法重算了 21,000 多局录到的 Aviator,每一局都和公布的结果一致。
1、开局前 Aviator 先公布服务器种子的 SHA-256 哈希
2、结束后公开服务器种子,以及前三位玩家的客户端种子
3、按这个顺序连在一起做 SHA-512
h = SHA-512(服务器种子 + 种子 1 + 种子 2 + 种子 3)
4、取 h 的前 13 个十六进制字符当作一个数
除以 2^52,得到 0 到 1 之间的 X
5、倍数 = max(1.00, floor(97 / (1 − X)) / 100)
6、核对服务器种子的 SHA-256 是否等于第 1 步公布的哈希
整个检查就是第 5 步和第 6 步。第 5 步算出的倍数和游戏显示的一样,说明结果按公式来。第 6 步对得上,说明服务器种子在开局前就定了。第 5 步里的 97,就是 97% 返还率写进去的地方。
这个方法只能往回查。下一局的服务器种子,要等那一局结束才公开,所以公式没法告诉你下一局会怎样。我们的一步一步教程教你在浏览器里算哈希,哈希检查工具可以替你做第 6 步。
给随机数生成器「设种子」,是什么意思?
种子是起始值,它决定伪随机数生成器整串输出。一个好的种子,要有两个特性:
熵要高。熵衡量的是有多难预测。用当前时间做出来的种子,熵很低。可能的时间就那么多,一个大概知道种子在什么时候产生的攻击者,可以把可能的范围缩得很小。从密码学安全的随机来源取得的种子,熵就很高:可能的种子多到天文数字。
要保密。种子在使用期间必须保密。攻击的人一旦知道它,就能预测它产生的每一局。在可自行验证的系统里,种子只在停用之后才揭晓,那时它已经不再产生新的局。
常见的锁定设计有两种,运作方式不一样。哈希链用在大家共用的局:事先产生一长串哈希,每一个都是下一个的哈希,开局前公布链的末端,每局揭晓一节;以后每一局的顺序,从一开始就定了,所以没有什么可以换。每个玩家各自的种子,会随着时间停用、换新:一个种子被换掉时,旧的揭晓出来让人检查,新的接手,而新种子的哈希早就公布了。
在每个玩家各自一套种子的设计里,换种子这个过程本身,就是一个可能的弱点。如果平台把换种子的时机,安排在玩家的特定行为上(比如有大额下注进来的时候),就算每一局单独都通过哈希验证,它还是可能影响结果的分布。这就是《种子更换》讲的时机问题。这是哈希检查涵盖范围上一个已知的限制。
怎样分辨随机数生成器的种子设得好,还是坏掉了?
只看一局,甚至几十局,都分不出来。坏掉的随机数生成器和正常的,输出用肉眼看起来一样。要发现问题,需要对大样本做统计分析。
统计学家会用的检验:
分布检验。收集几千个爆点,用卡方拟合优度检验或 Kolmogorov-Smirnov 检验,拿观察到的分布和理论分布对比。如果观察到的分布和理论差得很明显,随机数生成器或游戏的参数就有可疑的地方。见《怎么看倍数分布》。
序列相关检验。检查知道第 N 局的结果,能不能帮你预测第 N+1 局。在运作正常的随机数生成器里,相邻的局应该互相独立:相关系数在统计上应该和零分不出来。如果局和局之间有关联,可能是随机数生成器的循环太短,或者种子的熵不够。
游程检验。看高于中间值和低于中间值的结果,排成的顺序。在真正随机的数列里,「游程」(连续落在中间值同一边的结果)会符合一个可以预期的分布。长的游程太多或太少,都说明随机数生成器不够随机。
生日间距检验。检查伪随机数生成器的输出里,重复数值之间的间隔,符不符合预期的分布。偏离的话,可能暴露弱的伪随机数生成器内部状态有碰撞。
间隔 k 的自相关。对不同的 k,检验相隔 k 局的结果有没有关联。这可以发现伪随机数生成器输出里细微的周期,只看相邻两局是看不出来的。
这些检验要几千到几万局,才有足够的统计效力。这就是为什么一款游戏没数满至少 1 万局之前,实验室什么都不公布,也是为什么每个数字都附上样本量和误差范围。见《证据分级》。
一款被操控的崩盘游戏,在数学上是什么样子?
被操控的崩盘游戏,是随机数生成器的输出被动了手脚,产生的分布和公布的参数不一样,通常是为了让庄家优势比宣传的更高。
方法一:改参数。平台宣传返还率 97%,用的公式却只返还 93%。每一局都通过可自行验证的检查(哈希链是诚实的),但把哈希变成倍数的公式里,庄家优势比公开的高。只有用大样本去数返还率和分布,才能发现。
方法二:挑时机换种子。平台盯着进来的下注。有人下了一大注,平台就换上一个事先挑好的新种子,让接下来几局的爆点都很低。新种子的哈希早就锁定了,所以哈希检查照样通过。但换种子的时机和玩家的行为有关联,这就违反了每局独立的前提。要发现它,就要检验换种子是不是扎堆出现在下注金额大的时段。
方法三:弱的伪随机数生成器。平台用的伪随机数生成器熵不够,或者循环太短。输出可能看起来很随机,甚至通过统计检验,但知道或推算出生成器内部状态的人,就能预测以后的局。风险在于可以被预测,而不是分布看起来很怪;统计检验只抓得到比较粗糙的弱点。
方法四:绕过随机数生成器。在不是可自行验证的游戏里,平台可以在特定的局直接绕过随机数生成器,放进事先定好的结果。没有哈希锁定,玩家就没有任何办法发现。这是只靠随机数生成器的系统,根本上的弱点,也是可自行验证根本上的长处。
就算是可自行验证的随机数生成器,为什么还需要独立测量?
可自行验证证明的,是每一局的锁定都被守住了。它证明不了:
- 公式是公平的(改参数)
- 换种子的时机是公平的(挑时机换种子)
- 伪随机数生成器的熵足够(弱的伪随机数生成器)
- 整体分布和公布的返还率对得上(整体偏离)
这些缺口,就是独立测量重要的原因。哈希检查管的是每一局有没有被动过。大量局的计数,附上误差范围公布,管的是整体返还率和分布的形状。我们的哈希检查工具在你的浏览器里做第一件事;一款游戏过了最低样本量,实验室的游戏页就会放上第二件。
没有一种验证方法是完整的。只查哈希、不分析分布,会漏掉改参数。只分析分布、不查哈希,会漏掉对单独某一局动的手脚。两样加在一起,也就是密码学验证加上统计审核,才最能完整地看出一款崩盘游戏有没有照它说的运作。
原则是:信任是一层一层的,不是非黑即白。一款游戏不是简单的「公平」或「不公平」。它在几个互相独立的方面,各有多少能检查,而每个游戏页都写明哪些检查适用于它。见游戏列表,看每款游戏的公平性标签和实验室状态。
知道随机数生成器怎么运作,能帮你预测一局吗?
不能。只知道算法、不知道保密的种子,对下一局的结果什么也说明不了;而对任何做得好的生成器来说,从过去的输出反推种子,在计算上都做不到。这就是为什么预测软件不可能有用;见预测软件和机器人的检查。过去的结果,也不会让下一局往哪边偏。历史记录说明的是过去的表现,它预测不了下一局。
这一页对你有用吗?
匿名:不用账号,也不设 cookie。