每一次出牌三分之一各种情况
这个网站上的 RPS 是与庄家进行的石头、布、剪刀游戏,以连胜方式进行。赢了你的倍数就会增长;平局你再出一次;输了这轮就结束了。你第一次赢后可以随时提现。游戏看起来有策略——读庄家、避免它刚才出的牌——但实际上没有,因为庄家的牌是这样选出来的。
ENGINE-VERIFIEDOriginalRpsService.kt: getResult() draws round N’s dealer hand as the Nth nextIntBelow(3) of a SeedPairRandom on the round’s server seed, client seed and nonce — cursor N − 1, one HMAC-SHA256 of “clientSeed-nonce-cursor” each, first 13 hex digits over 2⁵², times 3, floored: 0 rock, 1 paper, 2 scissors. betGameTicket(): equal hands change nothing; a win adds one to winCount and sets the multiplier to base^winCount floored to two decimals, with base = (1 − house edge − 1/3) ÷ (1/3) = 1.97 at the 1% edge; a loss sets the multiplier and payout to zero. endGameTicket() refuses a cash-out before the first win. The client mirror is rps/rpsApi.ts.
,
,
中关于clientSeed-nonce-cursor
的一个 HMAC-SHA256,前 13 个十六进制数字超过 2⁵²,乘以 3,向下取整:0 是石头、1 是布、2 是剪刀。betGameTicket():相同的牌什么都改变不了;赢了把 winCount 加一,并将倍数设为 base^winCount,向下取整到两位小数,其中 base = (1 − house edge − 1/3) ÷ (1/3) = 在 1% 边际下的 1.97;输了将倍数和支付设为零。endGameTicket() 在第一次赢之前拒绝提现。客户端镜像是 rps/rpsApi.ts。</1>
For comparison, Koban Flip pays ×1.96 on a true coin flip, a 2% edge per call; the site’s dice and limbo are 1% games. RPS sits between them: 1.5% per win.
1.5% 从何而来
倍数是用平局计入总和构造的。计算一次出牌为一次赌注,赢时返回 ×1.97,平局返回本金,输时返回零,它返回 (1.97 + 1) ÷ 3 = 99%——每次出牌 1% 的边际。这在数学上是对的,但这不是玩家实际体验到的数字,因为平局不是一个结果。没有支付也没有损失;你只是继续出牌直到有人赢。
| WINS (k) | 梯子,定价 | 第二次赢再将赌注乘以 1.97,概率相同。因此坐庄连胜完全等同于在每次赢后以 98.5% 的价格再次对你的整个运行余额进行赌注,边际随着你每爬升一级而复合。 | 在 k 次赢后提现 | 赢数 (k) |
|---|---|---|---|---|
| 倍数 | 到达它的概率 | 如果你在这里提现的回报 | 边际 | 1.50% |
| 2 | ×3.88 | 25% | 97.00% | 3.00% |
| 3 | ×7.64 | 12.5% | 95.50% | 4.50% |
| 4 | ×15.06 | 1 in 16 | 94.12% | 5.88% |
| 5 | ×29.67 | 1 in 32 | 92.72% | 7.28% |
| 6 | ×58.45 | 1 in 64 | 91.33% | 8.67% |
| 8 | ×226.84 | 1 in 256 | 88.61% | 11.39% |
| 10 | ×880.36 | 1 in 1,024 | 85.97% | 14.03% |
| 12 | ×3,416.60 | 1 in 4,096 | 83.41% | 16.59% |
| 15 | ×26,121.21 | 1 in 32,768 | 79.72% | 20.28% |
倍数 = 1.97ᵏ 向下取整到两位小数,如引擎计算的那样;概率 = (1/2)ᵏ;回报 = 倍数 × 概率。向下取整最多只会损失几个百分点(1.97² = 3.8809 支付 ×3.88)。表格的每轮最大利润上限仍然适用。
从另一个角度读同样的事实:一个总是骑到五赢的玩家支付每次下注的 7.3%,五倍于每次获胜就兑现的玩家的代价。最高的倍数不是bolted onto游戏上的奖池;它们是同样的 98.5% 的硬币翻转,堆叠的,成本也堆叠的。
连胜感觉如何
两件事让骑行感觉比价格更好。第一是表格上的奖金感觉像是庄家的钱而不是你的——house-money effect——所以冒着 ×3.88 的风险来达到 ×7.64 感觉像是免费的机会。这是一个新的 3.88 单位的赌注,赔率是平手,边缘 1.5%。第二是连胜感觉像是动量。庄家的下一手牌是一个全新的 HMAC;四连赢改变第五次赢的概率恰好为零,这是赌徒谬论的镜像形式。
平手增加了它们自己的一点幻觉。两个平手连续发生的概率是九分之一,感觉像是险些成功,但它们不花任何成本也不改变任何东西:下一个非平手仍然是硬币翻转。
检查一轮
- 在这一轮之后,旋转你的种子对来揭示服务器种子,并确认其 SHA-256 匹配你在开始游戏前看到的指纹。
- 对于这一轮的第 N 次投掷,计算由服务器种子密钥的 HMAC-SHA256 通过 "clientSeed-nonce-(N−1)",读取前 13 个十六进制数字作为一个数字,除以 2⁵²,乘以 3 并向下取整:0 是石头,1 布,2 剪刀。
- 比较每个庄家手牌与你的投掷,计算赢次,并检查支付倍数是否与 1.97 的幂相对应,向下取整到两位小数。
重放手牌表明它们在你投掷前就已经固定了。价格——每次赢 98.5%,复利——不在哈希中;它在上面结算代码的两行中。
常见问题
在赌场庄家面前玩石头剪刀布赢的几率是多少?
这里庄家的手牌是均匀随机抽取的,所以任何投掷赢、平、输各占三分之一。因为平手重新进行,这一轮是 50/50 决出的。
RPS 的庄家优势是多少?
每次胜利1.5%:一次胜利支付×1.97,扣除平局后发生概率为50%,所以每次胜利返回98.5%。将平局计为返还本金的轮次,可得每次投掷1%——同一游戏的不同描述方式。
我应该在赢一次后兑现还是继续玩?
每一次额外胜利都是对整个累积倍数的新的偶数赔率投注,概率为98.5%,所以优势复合:兑现2次胜利后返回97.0%,5次胜利后92.7%,10次胜利后86.0%。兑现第一次胜利并重新开始是最便宜的玩法。
这个石头布娱纸牌游戏中有最佳投掷吗?
没有。庄家的手牌来自种子对,不依赖于你的投掷或之前的轮次,所以每次投掷都有相同的三分之一概率。
平局有什么作用?
不支付任何东西也不损失任何东西;你再投掷一次。第一次胜利前你无法在平局时兑现。
资源与参考
- Betkyo引擎源代码,主机服务:OriginalRpsService.kt — getResult()(第N轮 = 种子对的第N个nextIntBelow(3))、betGameTicket()(平局推进;base = (1 − 庄家优势 − 1/3) ÷ (1/3);倍数 = base^winCount向下取整到2位小数;失败为零)、endGameTicket()(仅胜利后才能兑现);客户端镜像 rps/rpsApi.ts
- 为本文撰写的精确计算:具有引擎20位数基数和2位小数向下取整的倍数阶梯;触达概率(1/2)ᵏ;按兑现点分类的返回和优势;通过重放HMAC流的200,000次运行交叉验证(首次胜利达到50.01%,三次胜利12.48%;每次决策平均1.50次投掷)
本文中的游戏