跳到正文
Clash Watchdog实验室计数
菜单

崩盘游戏随机数:SHA-256 哈希怎样变成倍数

主题
公平性和验证
发布日期
更新日期
篇幅
约 9 分钟读完
本页内容

崩盘游戏的随机性,来自一个伪随机数生成器(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。

问答

崩盘游戏的随机数生成器,是真正随机的吗?
它是伪随机的,在任何实际用途上,都和真正的随机分不出来。种子设得好的伪随机数生成器(PRNG),产生的数列能通过所有已知的随机性统计检验。「真正随机」(量子噪声、放射性衰变)和「伪随机」(用算法算出来)的分别,对密码学家有意义,对玩家没有。对玩家有意义的是:平台能不能预测或操纵输出?伪随机数生成器做得好,答案就是不能。
伪随机和「真的」随机,有什么不同?
真正的随机来自物理过程:量子起伏、热噪声、放射性衰变。这些从根本上就无法预测。伪随机来自算法:给它一个起始值(种子),算法就产生一串固定的、看起来随机的数列。知道种子和算法,你就能把这串数列一模一样地重现出来。不知道种子,你就分不出它和真正的随机有什么不同。在崩盘游戏里,种子是保密的(可自行验证的游戏,要等这个种子停用后才揭晓),所以输出实际上就是随机的。
坏掉的随机数生成器,怎样才能发现?
靠统计检验。运作正常的随机数生成器,输出会符合一个特定的分布;在崩盘游戏里,是一种由庄家优势决定的、和倍数成反比的形状。分析的人收集几千局的结果,用卡方检验、Kolmogorov-Smirnov 检验、游程检验和序列相关检验,拿它们和预期的分布对比。如果观察到的分布和预期的差得很明显,要么是随机数生成器坏了,要么是游戏的参数和它说的不一样。Clash Watchdog 实验室公布的,就是这种对比:一款游戏过了最低样本量,就一款一款公布。
有没有崩盘游戏用硬件随机数生成器?
到 2026 年为止,我们没听说过。硬件随机数生成器(来自物理噪声)用在一些受监管的赌场系统里,比如桌上游戏和彩票开奖;但可自行验证的崩盘游戏,需要用软件产生随机数。部分原因是,可自行验证要求计算结果是固定的(你要能从种子重现输出),而硬件随机数生成器本来就做不到这一点。在实际用途上,一个做得好的软件伪随机数生成器就够了。
如果我知道算法,能预测下一局吗?
只有在你也知道种子的时候才能,而种子在使用期间是保密的。在可自行验证的游戏里,服务器种子要等它停用之后才揭晓。到那时,你可以验证过去的局,却预测不了以后的局,因为已经换上新的种子了。对任何正确实现的密码学伪随机数生成器来说,想从观察到的输出反推种子,在计算上是做不到的。没有一款正常运作的崩盘游戏,能让过去的局预测下一局,这就是为什么预测软件做不到它们卖的东西。

全部文章

  • 可自行验证是什么:先不用数学讲一遍,再用数学讲一遍

    可自行验证(provably fair)是一种密码学方法,让玩家可以在事后检查,平台没有改过一局的结果。它用 SHA-256 哈希,在开局前锁定一个随机种子,开局后再把种子揭晓:揭晓的种子和事先锁定的哈希对得上,这一局就没有被动过。这篇先用直白的方式讲这个概念,再给想看的人讲数学,最后说清楚可自行验证能证明什么、不能证明什么。

  • 连串的错觉:连爆 20 局低倍数,不代表高倍数就该来了

    一长串低倍数,会让人觉得高倍数早就该来了。其实不是。游戏在设计上,每一局都和之前的局无关,实验室也会检验这一点。这篇讲人的大脑为什么会在随机的序列里看出规律、崩盘游戏怎样把这种错觉放大,以及评估一款游戏时,应该看什么,而不是看连串有多长。