鉱山の配置方法
Minesは5×5のボード。隠された鉱山の数を1~24の間で選択し、タイルを1つずつオープンします。安全なタイルをオープンするたびにマルチプライヤーが上昇し、鉱山でラウンドは0で終了し、安全なタイルのオープン後いつでもキャッシュアウトできます。このゲームは戦略を勧めます——コーナー、エッジ、「安全に見える」タイル——しかし、鉱山の配置方法のため戦略は存在しません。
ENGINE-VERIFIEDOriginalMinesService.kt: start()は1~24のmineCountを取得し、createMineListPf()を呼び出します。これはラウンドのSeedPairRandomに基づいた配列1…25の部分的なFisher–Yates シャッフル。i = 0 … mineCount − 1について、nextIntBelow(25 − i)を実行——「clientSeed-nonce-i」の1つのHMAC-SHA256の最初の16進数13桁を2⁵²で割り、(25 − i)で乗じ、床関数を適用——その位置のタイルをmine iとして取得し、未選択範囲の末尾にスワップします。betGameTicket()はラウンドカウンターをインクリメント、既にオープンされたタイルを拒否、タイルが鉱山リストにある場合はチケットをゼロにし、それ以外は∏(25 − i) ÷ ∏(25 − mineCount − i) over i < roundをマルチプライヤーに設定、小数点第2位に床関数、(1 − house edge)で乗じ、再度小数点第2位に床関数を適用します。すべての安全なタイルがオープンされたらチケットは自動的にクローズします。クライアントミラーはmines/minesApi.tsで、両方の床関数をBigIntで繰り返します。
部分的なFisher–Yates シャッフルはm個のタイルのすべてのセットを等しく可能にし、鉱山は最初のクリック前に固定されます。どのタイルをオープンしても、閉じたままのタイルがある場合、それが鉱山である確率はm ÷ (閉じたままのタイル数)です。コーナーはより安全ではなく、開いたばかりのタイルの隣のタイルがより危険ではなく、ボードは表示したものの記憶を持ちません。ゲームが読み取る唯一の数字は、オープンした安全なタイルの数です。
マルチプライヤーは公正なオッズで、2回の床関数を適用
m個の鉱山でk回のピックで生き残る確率は、25 − m個の安全なタイルからk個を選択する方法の数を25から全てk個を選択する方法の数で割ったもの: C(25 − m, k) ÷ C(25, k)。エンジンの∏(25 − i) ÷ ∏(25 − m − i)は正確に逆数——公正なマルチプライヤー——そしてそれは2つのことを行います。公正な数を小数点第2位に床関数を適用、0.99で乗じ、再度床関数を適用します。
0.99は1%のハウスエッジ。床関数はテーブルを興味深くします。なぜなら、×227.70では小数点第2位への床関数はほぼ価値がなく、×1.04では大きな価値があるからです。以下は1回のピックが各鉱山数に対して支払うもの、およびそれが返すもの。
| MINES | FAIR MULTIPLIER | PAYS | CHANCE THE TILE IS SAFE | RETURN | EDGE |
|---|---|---|---|---|---|
| 1 | ×1.0417 | ×1.02 | 96% | 97.92% | 2.08% |
| 2 | ×1.0870 | ×1.06 | 92% | 97.52% | 2.48% |
| 3 | ×1.1364 | ×1.11 | 88% | 97.68% | 2.32% |
| 5 | ×1.2500 | ×1.23 | 80% | 98.40% | 1.60% |
| 10 | ×1.6667 | ×1.64 | 60% | 98.40% | 1.60% |
| 15 | ×2.5000 | ×2.47 | 40% | 98.80% | 1.20% |
| 20 | ×5.0000 | ×4.95 | 20% | 99.00% | 1.00% |
| 24 | ×25.0000 | ×24.75 | 4% | 99.00% | 1.00% |
Pays = floor₂(floor₂(fair) × 0.99)、エンジンが計算する方式です;return = pays × chance。地雷が2個の場合、fair ×1.0870は×1.08になり、その後×1.0692、そして×1.06になります:floorsは8.7セントのマージンから2.5セントを取り除きます。
したがって、1回のピックの価格は1%ではありません。それは1%にプラスして2つのfloorが破棄するもの、そしてボードの下部の小さい倍数ではそれは別のポイント以上です。1%に達するのは、fair乗数が大きくてセント単位がもはや重要でない場合だけです — 最初のピックで地雷20個、またはあなたが数タイル進んだら任意の地雷数。
複利しないラダー
Minesの驚くべき部分は、あなたが進み続けるときに起こることです。RPSのようなストリークゲームでは、すべての追加の勝利は同じ1.5%エッジで全実行残高の新しいベットなので、10勝は14%の費用がかかります。Minesはそのような方法では機能しません。各ランクは全ラン公正オッズから1%を引いたものとして最初から価格設定されるため、任意のキャッシュアウトポイントでのリターンは約99%です — 3番目のタイルで停止するか20番目のタイルで停止するかは同じです。
| 安全なタイル(k) | ペイ | そこにたどり着く確率 | ここでキャッシュアウトした場合のリターン |
|---|---|---|---|
| 1 | ×1.11 | 88.00% | 97.68% |
| 2 | ×1.27 | 77.00% | 97.79% |
| 3 | ×1.47 | 66.96% | 98.43% |
| 5 | ×1.98 | 49.57% | 98.14% |
| 10 | ×4.99 | 19.78% | 98.72% |
| 15 | ×18.96 | 5.22% | 98.92% |
| 20 | ×227.70 | 0.43% (1 in 230) | 99.00% |
| 22 (the board) | ×2,277.00 | 0.043% (1 in 2,300) | 99.00% |
Chance = C(22, k) ÷ C(25, k)。マルチプライヤーが増えてフロアがそれより縮小するにつれてリターンは99%に向かって上昇し、最初のランク以下に下がることはなく99%を超えることもありません。
別の見方をすると、タイル単位のオッズはフェアです。10個の安全なタイルから11個に3個のマインがある状態に移行することは、12 ÷ 15 = 80%の確率で6.24 ÷ 4.99 = ×1.2505を支払うベットであり、これはフェアよりもわずかに有利です — そのランクでフロアはあなたの有利に落ちました。ハウスはすでにはしごの底で1%を取っており、上がる際に再度取ることはありません。これは深いランクを他のどの意味でも良いベットにはしませんが — 1/230のショットは依然として1/230のショットです — しかし、RPSの場合のような「早期にキャッシュアウトする」というルールがここには存在しないことを意味します。ランの価格は、最下段を除いてどこで止まっても同じです。最下段ではより悪いです。
全体の表
ボード上には300の設定があります — 24個のマインカウント、それぞれ安全なタイルと同じ数のピックがあります — エンジンはそれらすべてを同じ方法で価格設定します。その300のうち、171が小数第1位まで99.0%を返し、66が正確に99.00%を返します。32は98.5%未満を返し、すべて×2.17以下のマルチプライヤーにあります。×2.20以上を支払うものは何も98.5%未満を返しません。最悪の2つは1個のマインで2回のピック、2個のマインで1回のピックで、どちらも92%の確率で×1.06です: 97.52%。
| マイン | 安全なタイル | 支払い | 確率 |
|---|---|---|---|
| 1 | 24 | ×24.75 | 1/25 |
| 3 | 22 | ×2,277.00 | 1/2,300 |
| 5 | 20 | ×52,598.70 | 1 in 53,130 |
| 10 | 15 | ×3,236,072.40 | 1 in 3,268,760 |
各ラウンドはちょうど99.00%を返却します。サイトの1ラウンドあたりの最大利益がこれに加算されるため、大きい倍率は最大利益以下の賭け金でのみ満額が支払われます。
選択するマイン数は結果の形状を変えますが、価格は変わりません。1つのマインは開始時に1タイルあたり4%の死亡率を持つ遅い上昇です。24マインは4%での単一の×24.75コイントスです。どちらもハウスの1%プラスフロアを負担し、フロアはタイルあたりの支払いが最も多い設定で最も小さいです。
ラウンドの確認
- ラウンド終了後、シードペアをローテーションしてサーバーシードを表示し、そのSHA-256がプレイ前に表示されたフィンガープリントと一致することを確認します。
- タイル1…25を1列に書きます。i = 0からマイン数より1少ない値まで、サーバーシードをキーとして「clientSeed-nonce-i」に対するHMAC-SHA256を計算し、最初の13ビットの16進数をターム数として読み込み、2⁵²で除算し、(25 − i)を乗算してフロアを取ります。そのポジションのタイルはマイン i + 1です。ポジション25 − i(1から数える)のタイルと交換して続けます。
- マイン一覧をゲームが表示したタイルと照合し、支払われた倍率を、開いた安全なタイル数kに対してC(25, k) ÷ C(25 − m, k)を小数第2位まで切り捨て、0.99を乗算し、再度切り捨てた値と照合します。
リプレイは、あなたがクリックする前にマインがそこにあったことを示しています。それが表示できないのは、別のタイルがより安全だったというタイルです。ゲーム全体の価格は2つのフロアと0.99にあり、クリック位置には何もありません。
FAQ
Minesのハウスエッジは何ですか?
テーブルの上部で1%、下部で最大2.5%です。すべての倍率は、公正なオッズを小数第2位まで切り捨て、0.99を乗算し、再度切り捨てたものです。フロアは大きい倍率ではほぼ何もかかりませんが、小さい倍率では1ポイント以上かかります。最悪の設定である1マインで2ピック(または2マインで1ピック)は97.52%を返却します。
タイルをクリックし続けるとハウスエッジは増加しますか?
いいえ。各段階は全体の実行の公正なオッズマイナス1%として価格が設定されているため、キャッシュアウト位置に関係なく戻り率は約99%です。フロアが大きい倍率ではあまり重要でないため、深く進むにつれてわずかに上昇します。これはRPSなどのストリークゲームとは異なり、追加の勝利ごとにエッジが複合します。
Minesでどのタイルが最も安全ですか?
ありません。マインは各ラウンドの開始前にシードペアから均一にシャッフルされるため、閉じているすべてのタイルは同じ確率でマインが隠れています:マイン数÷閉じているタイル数。コーナー、エッジ、パターンは何も変わりません。
ボードを全クリアする確率は?
C(25 − m, k) ÷ C(25, k)全てのセーフタイルがオープン:1マインで1/25、3マインで1/2,300(×2,277)、5マインで1/53,130(×52,598.70)、10マインで1/3,268,760。各ラウンドの最大利益を限度として、それぞれ正確に99%のフェアを支払います。
何個のマインを選ぶべき?
マイン数はライドの形を変えますが、価格は変わりません:マインが多いほど、ステップは少なく、大きくなります。マルチプライヤーが小さい設定—マイン数が少なく、ピック数が少ない—が小数第2位のフロアで最も損失を出します;×2.20以上を支払うすべてのステップは98.5%以上を返します。
ソースと参考文献
- Betkyo エンジンソース、ハウスサービス:OriginalMinesService.kt — start()(mineCount 1–24)、createMineListPf()(部分Fisher–Yates:カーソルiで i = nextIntBelow(25 − i)を描画し、未選択範囲の最後にスワップ)、betGameTicket()(multiplier = ∏(25 − i) ÷ ∏(25 − mines − i)を小数第2位にフロア、×(1 − ハウスエッジ)、小数第2位にフロア;マインで0;全クリアで自動クローズ);クライアントミラー mines/minesApi.ts minesMultiplier()
- この記事用に書かれた正確な計算:エンジンの2つのフロアを持つ全300個のマイン数、ピック数の設定を正確な有理数演算で;到達確率 C(25 − m, k) ÷ C(25, k);キャッシュアウトポイント別のリターンとエッジ;テーブル全体のリターン分布(300個中171個が99.0%に丸め、66個がちょうど99.00%、32個が98.5%未満、最小97.52%)