整个游戏就是一个分数
Fugu 是一个扫雷游戏:二十五个格子,其中若干个隐藏一条鱼,每翻开一个安全格子乘数就会增加。这个乘数看起来像是手工设计的。其实不是。它是一个单一的分数,由引擎计算输出。
引擎验证来自 mines/minesApi.ts:MINES_CELLS = 25(5×5)。minesMultiplier() 计算公平赔率为一个精确分数 — ∏(cells−i) / ∏(cells−mines−i),遍历目前为止揭示的每个格子 — 向下舍入到小数点后两位,乘以表的返回系数再向下舍入一次。当比率还未溢出时,阶乘乘积早已溢出双精度浮点数,所以引擎用 BigInt 保存它们。返回系数在 coinGame.ts 中默认为 0.99;实时表从服务器获取自己的数值。
这个分数就是概率的倒数。在二十五个格子中有 m 个雷的情况下,你前 k 次选择都是安全格子的概率,是每一步(剩余安全格子数)÷(剩余格子数)的乘积 — 而引擎的分数就是这个乘积的倒数。所以任何格子上的乘数是 1 ÷(到达它的概率),× 0.99。
这样写出来的话,人们觉得 Fugu 令人惊讶的两点就都显而易见了。
为什么十个雷的赔率与十五个雷相同
完成全盘意味着揭示每一个安全格子,这样做的概率是 1 除以雷可能被放置的不同方式数:1 ÷ C(25, m)。所以全盘完成的赔率是 C(25, m) × 0.99,而二项式系数是对称的 — 选择哪 10 个格子放雷的方法数等于选择哪 15 个格子不放雷的方法数。
| 雷数 | 要完成的安全格子 | 全盘完成赔率 | 公平赔率 | 引擎赔率 |
|---|---|---|---|---|
| 1 | 24 | 1 比 25 | ×25 | ×24.75 |
| 2 | 23 | 1 in 300 | ×300 | ×297.00 |
| 3 | 22 | 1 in 2,300 | ×2,300 | ×2,277.00 |
| 5 | 20 | 1 in 53,130 | ×53,130 | ×52,598.70 |
| 10 | 15 | 1 in 3,268,760 | ×3,268,760 | ×3,236,072.40 |
| 15 | 10 | 1 in 3,268,760 | ×3,268,760 | ×3,236,072.40 |
| 20 | 5 | 1 in 53,130 | ×53,130 | ×52,598.70 |
| 24 | 1 | 1 in 25 | ×25 | ×24.75 |
从上到下和从下到上阅读表格:这是同一列数字。十个地雷和十五个地雷是镜像,五个和二十个也是,一个和二十四个也是。
所以该网站能显示的最大数字——×3,236,072.40——同时属于两个不同的棋盘,但它不是最难的棋盘。十二或十三个地雷会支付更多(C(25,12) = C(25,13) = 5,200,300),但这些是不可选的,该指南明确说明支付额在任何这些数字之前就已受到表格最大利润的限制。全清数字是公式的属性,不是任何人赢得的奖金。
梯子的另一端
相同的分数设定了第一个方块的价格,这里地雷数的表现与全清表建议相反:更多地雷,更大的第一步。
| 地雷 | 首次选择安全的概率 | 引擎赔付 |
|---|---|---|
| 1 | 96.0% | ×1.02 |
| 3 | 88.0% | ×1.11 |
| 5 | 80.0% | ×1.23 |
| 10 | 60.0% | ×1.64 |
| 15 | 40.0% | ×2.47 |
| 20 | 20.0% | ×4.95 |
| 24 | 4.0% | ×24.75 |
有24个地雷,确切地说有一个安全瓷砖,所以第一次选择就是完全清除——该行与顶部表格匹配,因为必须这样。
一个地雷是一个几乎永不提前结束的缓慢阶梯;二十四个地雷是一个打扮成地雷阵的单个1比25抽签。棋盘在两种情况下看起来都一样。分数则不同。
每次选择的成本
这是文章中值得提出的部分。如果倍数是0.99除以到达那里的概率,那么在任何瓷砖兑现的预期值是概率×(0.99÷概率)= 0.99。每个瓷砖。每个地雷数。在一个瓷砖之后或二十个之后兑现,在一块一地雷的棋盘或一块二十地雷的棋盘上,平均回报是美元的99美分。
这与Limbo在每个目标收取的相同固定价格相同,与Koban的阶梯所做的相反——在那里,每个阶梯因为每个阶梯单独定价为×1.96而费用复合。Fugu从赔率中一次性定价整个路径,因此骑得更深不会提高费用。它提高了方差,仅提高方差。
引擎中的两个楼层——一次在公平分数上,一次在×0.99之后——从一些阶梯中削减百分之一,所以精确数字坐在略低于99%而不是在它。引擎将产品保持在BigInt中,以便分数本身永远不是四舍五入的东西。
So the honest way to read the mine selector is not “which board pays best” — they all pay the same — but “how much of my stake do I want riding on each tile”. A low mine count is many small steps; a high one is a few violent ones. The sizing arithmetic in risk of ruin is the whole decision, and the engine’s fraction is what makes it a clean one.
遊5×5棋盘及其单一分数
Fugu:选择地雷数,翻转瓷砖,并根据上述公式检查阶梯Fugu →
常见问题
Fugu中的最高倍数是多少?
×3,236,072.40在屏幕上,用于使用10个或15个地雷清除所有安全瓷砖——C(25,10)×0.99。这是公式的属性而不是支付奖金:指南指出支付受表格最大利润的限制。
为什么10个地雷和15个地雷支付相同?
因为完全清除支付是放置地雷的方式数C(25, m)乘以0.99——C(25,10)等于C(25,15)。相同的对称性将5与20配对,将1与24配对。
哪个地雷数的赔率最好?
都没有。倍数是0.99除以到达每个瓷砖的概率,所以在任何棋盘上兑现的预期回报是99%。地雷数改变了游戏的感受,而不是成本。
Fugu倍数是如何计算的?
作为一个精确分数——(剩余瓷砖)的乘积除以每个已显示瓷砖的(剩余安全瓷砖)的乘积——向下取整到两位小数,乘以表格的回报因子(默认为0.99),再次向下取整。引擎以BigInt计算产品,因为它们会溢出常规数字。
来源和参考资料
- Betkyo引擎源代码:mines/minesApi.ts中的MINES_CELLS和minesMultiplier();_shared/coinGame.ts中的默认返回系数0.99。表中的每个数字都是该函数计算出的结果,而不是已发布的赔率表
- 二项式系数及其对称性 C(n,k) = C(n,n−k) — 这是任何组合数学教科书中的标准内容
本文中的游戏