两个函数,完整呈现
大多数赌场只是描述一下赔率。我们可以做得更好,因为这两款游戏都足够简短,可以完整引用。以下是决定一局 Limbo 结果的每一行数学:
引擎已验证_shared/rng.ts 中的 curve100,完整函数为:p = floor((0.99 / (1 − u)) × 100),然后限制在 100 到 1,000,000 之间——也就是 ×1.00 到 ×10,000。`u` 是从已提交种子对的 HMAC-SHA256 中读取的均匀值。demoLocal.ts 在每次 limbo 投注时调用它,公平性验证器会重新计算它。
再来看 Crash,它的函数并不相同:
引擎已验证_shared/rng.ts 中的 bust100:h 是 HMAC-SHA256(链接哈希, 公共盐值) 的前 52 位,e 为 2⁵²,p = (100·e − h) / (e − h),同样限制在 100–1,000,000 范围内。公平性验证器将此步骤标记为“recomputed — floor((100·2⁵² − h) / (2⁵² − h))”。
两种不同的形态。写成 u = h / 2⁵² 让两者用同样的量表达,区别就很明显了:Limbo 产生的是 0.99 / (1 − u),Crash 产生的是 (100 − u) / (100(1 − u))。Limbo 中的 0.99 就是庄家优势,直接作为分子中的固定折扣。Crash 没有这样的常数——它的抽水隐藏在曲线形态里。
每种玩法的成本
把每个函数转化为玩家真正需要的两个数字:达到目标的概率,以及押注该目标的平均回报。
对于 Limbo,达到倍数 x 的概率是 0.99 / x,所以押注赔付 x 的回报是 x × 0.99/x——无论你选什么 x,结果都恰好是 0.99。对于 Crash,概率是 99 / (100x − 1),回报是 99x / (100x − 1),它取决于 x。
| 目标 | LIMBO — 概率 | LIMBO — 回报 | CRASH — 概率 | CRASH — 回报 |
|---|---|---|---|---|
| ×1.01 | 98.02% | 99.00% | 99.00% | 99.99% |
| ×1.50 | 66.00% | 99.00% | 66.44% | 99.66% |
| ×2 | 49.50% | 99.00% | 49.75% | 99.50% |
| ×5 | 19.80% | 99.00% | 19.84% | 99.20% |
| ×10 | 9.90% | 99.00% | 9.91% | 99.10% |
| ×100 | 0.99% | 99.00% | 0.99% | 99.01% |
| ×1,000 | 0.099% | 99.00% | 0.099% | 99.00% |
| ×10,000 | 0.010% | 99.00% | 0.010% | 99.00% |
Limbo的回报曲线在设计上是平的。Crash的回报曲线一开始较高,然后向下收敛——它永远不会跌破99%,也永远不会达到100%。
所以诚实的总结是:Limbo在任何地方都收取同样的价格。Crash在短程时收费略低,长程则趋近于同样的价格。差距很小——在×2时只有半个百分点——但它是真实存在的,而且与这两款游戏给人的印象恰恰相反。Crash感觉像是风险更高的产品,但若真要说的话,它反而略微更便宜一些。
为什么会有两种不同的形态
答案并不是说哪一个设计得更好。而是它们对不同的东西做出了承诺。
Limbo是按玩家、按下注结算的。你的种子对和你的nonce生成你的数字,因此自然的构造方式是“取一条公平曲线并乘以0.99”——这是一个你可以明确指出的优势。正是这个恒定的0.99使得每个目标的回报都相同,这也正是为什么Limbo可以诚实地说,选择目标只是纯粹的方差决策,没有别的。
Crash 结算的是整个房间共用的一个数字。本轮所有人都沿着同一条曲线冲向同一个爆点,因此这个结果不可能取决于任何个人的种子。它来自一个哈希链——每一轮的链节都哈希指向前一轮,并附带一个公开的salt——所以未来所有轮次的完整序列早在第一笔下注之前就已经确定,并且可以永远向后验证。
这就是Crash的验证方式与本站其他游戏截然不同的结构性原因:没有需要公开的每位玩家专属服务器种子,因为这个数字从来就不是你个人的。公开的是链节,而证明其真实性的方式是它哈希指向上一轮。
(100 − u)/(100(1 − u)) 这个形式是链式衍生爆点的标准构造,其优势来自算术本身,而非某人选定的常数。这就是为什么它的回报率会随目标而变化,而Limbo的回报率不会——也是为什么比较这两者需要推导两者的公式,而不是直接从页面上读一个数字。
上限,以及它的代价
两个函数都在同一个上限处封顶:以百分之一为单位是1,000,000,即×10,000。Limbo那条不设上限的曲线本会继续延伸;这个封顶把两者的尾部都截断了。
这个上限实际上截走了什么?对于Limbo来说,曲线想要超过×10,000的概率是0.99/10,000——大约10,101轮中有1次。在那些轮次里,你拿到的是×10,000,而不是曲线本应给出的数值。因此封顶带来的预期成本虽小但并非为零,这也是Limbo原本完美平坦的99%回报率中唯一不那么完整的地方。
我们特意指出这一点,而不是把它四舍五入忽略掉,因为“每个目标都恰好是99%”这种干净利落的说法本就值得加个注脚。它在你实际能选择的每个目标上确实恰好是99%;上限就是模型停止的地方。
遊一个函数,×1到×10,000
Limbo:先设定倍数,然后再对照上面的曲线检验结果Limbo →常见问题
Limbo的庄家优势是多少?
1%。引擎的曲线是0.99/(1−u),其中的0.99使得回报率在你选择的每个提现目标上都恰好是99%——×1.5和×1,000的成本是一样的。
Crash的庄家优势是多少?
这略微取决于你在何处提现。回报率为99x/(100x−1)——在×1.01时约为99.99%,在×2时约为99.50%,在高目标时收敛于99%。它永远不会低于99%。
Limbo和Crash本质上是同一个游戏吗?
不是。出于结构性原因,它们运行不同的函数:Limbo根据你自己的种子对为每位玩家单独抽取结果,而Crash则从一个预先承诺的哈希链中为本轮所有玩家抽取同一个数字。
选择更高的倍数会改变庄家优势吗?
在Limbo中不会——回报率在所有目标上都恒定为99%,所以选择完全取决于方差。在Crash中会有非常轻微的变化,越长的行程越接近99%。
最大赢额是多少?
两个游戏都是×10,000——即引擎中1,000,000(以百分之一为单位)的封顶。在Limbo中,曲线大约每10,101轮就有一次想要超过这个值,而那些轮次会支付上限金额。
来源与参考资料
- Betkyo引擎源码:_shared/rng.ts中的curve100和bust100,全文引用;limbo结算逻辑位于_shared/demoLocal.ts,两条验证路径均位于_shared/fairness.tsx
- 概率和回报来自这两个函数——Limbo 是 P(m ≥ x) = 0.99/x,Crash 是 99/(100x − 1)——而不是从公开的 RTP 表中得出的