玩法
觉得自己手气不错?大奖骰子小游戏
落在大奖格上即可玩一局快速骰子投注——挑几个数字、放下你的赌注,去赢取一份平均而言公平的奖金。

通俗版
大奖格(第 20 格)过去什么都不会发生——你落在上面,然后就直接结束回合。现在它会开启一个快节奏的小骰子游戏,要不要玩由你决定。
从 1 到 6 中挑选一个、两个或三个数字,支付固定赌注 1000,然后掷一颗骰子。如果骰子掷出你选的数字之一,你就赢了——而且你押的数字越少,奖金越大。
- 押 1 个数字——命中可得奖金 6000。
- 押 2 个数字——命中可得奖金 3000。
- 押 3 个数字——命中可得奖金 2000。
- 没兴致?拒绝并免费结束回合——只有在转动骰子时才会扣费。
奖金经过调校,让这笔投注在平均上不赚不赔——每一笔奖金都由银行支付,因此在多次转动之后,它既不会掏空你的现金,也不会让它膨胀。这纯粹是为了好玩,而不是一个吞钱的无底洞。
现金不够?窗口照样会打开,让你看到这次投注,但在你能付得起赌注之前无法转动骰子。机器人总是跳过,所以要不要玩大奖完全由你一个人说了算。
技术细节
这个机制刻意做到了期望值(EV)中性:对于任意数量的选择 k,命中的概率为 k/6,奖金为 6000/k,因此长期来看现金的净变化恰好为零。
ts
// reduce.ts — bank-funded, fair on the distribution
const JACKPOT_STAKE = 1000;
const JACKPOT_PAYOUT = { 1: 6000, 2: 3000, 3: 2000 };
// EV per spin, for k = 1, 2, 3:
// (k / 6) * (6000 / k) - 1000 = 0落在大奖格上现在会转入一个新的 pending_jackpot 阶段,包含两个动作:place_jackpot_bet(校验 1–3 个互不相同的数字、扣除赌注、掷骰并结算净额)以及 skip_jackpot(不扣费)。由于赌注保证了未命中也绝不会变成负数,因此不存在付款或破产的流程。
它在发布时没有任何数据库迁移。该阶段和待处理状态都存放在 JSON 格式的 engine_state 中,动作不受枚举约束,而已有的 jackpot_won 事件会在每一笔已结算的投注中被复用——无论输赢——并通过载荷中的 won 标志加以区分。
