1行につきコイン1枚
ピンとボールの跳ね方をPlinkoボードから取り除くと、残るのはコインです。各行でボールは右か左に行き、n行後には0からnの間のある回数だけ右に行ったことになり、その回数が着地するバケットになります。物理的な演出が算数を変えることはありません——アニメーションは経路を見せるためのものであり、右バウンス数が同じ経路はすべて同じバケットに着地します。
ENGINE-VERIFIEDplinko/plinkoApi.ts:「ビンのインデックスは右バウンスの回数に等しいので、右バウンス数が同じ経路はすべて同じ結果になる」。デモプレイでは、rows回のイテレーションのそれぞれでMath.random() < 0.5のときにresultに1を加えることでビンが導出されます。その後makePath()が、まったく同じ回数の右バウンスを持つルートを描き、ボールがさまよっているように見えるようシャッフルします。ROW_MIN = 8、ROW_MAX = 16、RISKS = LOW / MEDIUM / HIGH。
公正なコイン投げの回数には名前があります:二項分布です。n行のボードでバケットkに着地する確率はC(n, k) ÷ 2ⁿ——k回の右バウンスを持つ経路の数を、全経路数で割ったものです。これがこのゲームの確率モデルの全てであり、以下の数字は全てそこから導かれます。
| バケット(右バウンス数) | 経路数 | 確率 | ハイリスク配当 | ローリスク配当 |
|---|---|---|---|---|
| 0または16(端) | それぞれ1 | それぞれ65,536分の1 | ×1,000 | ×16 |
| 1または15 | それぞれ16 | それぞれ4,096分の1 | ×130 | ×9 |
| 2または14 | それぞれ120 | それぞれ1/546 | ×26 | ×2 |
| 3または13 | それぞれ560 | それぞれ1/117 | ×9 | ×1.4 |
| 4または12 | それぞれ1,820 | それぞれ2.8% | ×4 | ×1.4 |
| 5または11 | それぞれ4,368 | それぞれ6.7% | ×2 | ×1.2 |
| 6または10 | それぞれ8,008 | それぞれ12.2% | ×0.2 | ×1.1 |
| 7または9 | それぞれ11,440 | それぞれ17.5% | ×0.2 | ×1 |
| 8(中央) | 12,870 | 19.6% | ×0.2 | ×0.5 |
経路は二項係数C(16, k)です。倍率はエンジンの16行テーブルによるもので、これは対称なので、この表の各行はミラーリングされたバケットのペアをカバーしています。
どのボードもおよそ99%のリターンになります
各バケットの倍率にその確率を掛けて合計すれば、1回のドロップの期待リターンが得られます。ソースファイル内の27種類のボードすべてで計算しても、答えはほとんど変わりません。
| 行数 | 低 | 中 | 高 | エッジバケットの確率 |
|---|---|---|---|---|
| 8 | 98.98% | 98.91% | 99.06% | 256分の1 |
| 10 | 99.00% | 98.91% | 99.06% | 1,024分の1 |
| 12 | 98.98% | 98.99% | 99.12% | 4,096分の1 |
| 14 | 99.00% | 98.99% | 98.98% | 16,384分の1 |
| 16 | 99.00% | 98.99% | 98.98% | 65,536分の1 |
行数が奇数の場合も同じ帯域(98.9〜99.2%)に収まります。例外については以下で解説します。
エンジン検証済みplinko/plinkoApi.ts、PLINKO_MULT:行数8〜16をキーとするL、M、Hの3つのテーブルは「pixi設定からそのまま持ってきたもので、描画されるビンがサーバーのペイアウトと正確に一致する」。例:H[16] = [1000, 130, 26, 9, 4, 2, 0.2, 0.2, 0.2, 0.2, 0.2, 2, 4, 9, 26, 130, 1000]; L[16] = [16, 9, 2, 1.4, 1.4, 1.2, 1.1, 1, 0.5, 1, 1.1, 1.2, 1.4, 1.4, 2, 9, 16]; M[8] = [13, 3, 1.3, 0.7, 0.4, 0.7, 1.3, 3, 13]。上記の各期待リターンは、テーブルの各バケットにおける Σ 倍率 × C(行数, k) ÷ 2^行数 です。
つまりリスク切り替えは、価格の切り替えではありません。ロー、ミディアム、ハイのいずれも、多数回ドロップした場合、1ドルあたり約99セントを返す点は同じです。変わるのは、その足りない1セントがどこから取られるかです。ローリスクでは、それ以外はほぼフェアなボード上で、中央のバケットが×0.5になることでそれを賄います。ハイリスクでは、16行ボードで5回に4回のドロップを捕らえる中央の5〜6個のバケットに×0.2を支払うことでそれを賄い、その分を端の方に回します。
| ローリスク | ハイリスク | |
|---|---|---|
| 損失(倍率×1未満)になるドロップの割合 | 19.6% | 79.0% |
| 最も起こりやすい結果 | ×0.5(中央、19.6%) | ×0.2(バケット6~10、79.0%) |
| ×9以上が出る確率 | 1,928分の1(×9と×16のバケット) | 47分の1(×9~×1,000のバケット) |
| 最上位バケットの確率 | 65,536分の1(×16) | 65,536分の1(×1,000) |
| 期待還元率 | 99.00% | 98.98% |
行数が変えるのは形であって価格ではない
行数を増やすと二項分布はより鋭くなる。中央は相対的に狭まり、端はさらに稀になる。8行なら端のバケットは256分の1だが、16行では65,536分の1、つまり256倍も稀になる。倍率表もこのカーブをほぼ正確に反映している——ハイリスクの端は×29から×1,000へと34倍になる一方、その確率は256分の1に低下するため、端のバケットは背の高いボードでは背の低いボードよりも1回あたりの価値が低くなり、中央のバケットがその差を埋めている。
- 短いボードは価値を端に集中させる。8行ハイリスクでは、2つの×29バケットだけで99.06%の還元率のうち22.7ポイントを占める。
- 背の高いボードは価値を肩の部分に集中させる。16行ハイリスクでは、両側のバケット1から5(×130から×2)がほとんどの還元を担っており、2つの×1,000バケットはその中で約3ポイントしか寄与しない。
- 中央はすべてのボードにかかる税のようなものだ。行数やリスク設定にかかわらず、最も出やすいバケットは常に×1未満を支払う。エッジ(控除)はそこに潜んでおり、だからこそPlinkoの長いセッションは、稀なスパイクで区切られたゆっくりとした漏出のように感じられる。
これはマインフィールドの一つの分数やケノのリスクダイヤルと同じ教訓だ。運営者はテーブルを公開し、そのテーブルが還元率を意味し、プレイヤーに与えられるどのダイヤルも、合計を変えることなく結果間で還元を再分配するだけだ。ダイヤルが合計を変えられるゲームなら、ある設定が他よりも単純に優れているということになる。よく作られたゲームは、どの設定でもコストが同じになるようにし、プレイヤーには乗り味の形だけを選ばせる。
合わなかった一つのセル
すべてのテーブルを手作業で価格計算したところ、一つの異常が見つかり、それは隠すよりも報告する価値があった。27のテーブルのうち26は、公正なコインが要求する通り左右対称だった。9行ハイリスクのテーブルはそうではなかった。左から4番目のバケットに×0.6、右側の鏡像バケットに×1.6が記載されていた。印刷通りに価格計算すると、このボードは約115%を還元する——プレイヤーに払うボードということになり、どの運営者も意図的にそんなものは出荷しない。
エンジン検証済みplinko/plinkoApi.ts: H[9] は現在 [43, 7, 2, 0.6, 0.2, 0.2, 0.6, 2, 7, 43] を返す。7番目の項目は2026年9月4日まで1.6を返していた。その鏡像が示す0.6は99.06%の期待還元率をもたらし、他のすべてのボードと一致する。クライアントファイルには、テーブルはpixiの設定からそのままコピーされたものであり、サーバーのペイアウトが正である旨が記載されている。
同じ×1.6は、Reactのテーブルがコピーされた元の古いpixi設定にも存在しており、したがってこれは2つのクライアントファイル間の単なる食い違いではなく、両方が受け継いだセルだった。ファイル自体が、意見の相違が生じた場合にどちらが勝つかを記している——サーバーはサーバーのテーブルが示す通りに支払い、クライアントのテーブルはバケットを描画するために存在する。サーバー側のセルが0.6だったのか1.6だったのかはここからは確認できなかったため、この記事はゲームチームに確認を依頼した。
1.6と表示されていた。この行はペイアウトテーブルが最初に書かれたときからずっとこの値を持っており、そのボードは実際に115.469%を返していた——上記の計算通りであり、クライアント側の表示上の不具合ではない。このセルはその後、クライアントテーブル、シード済みスキーマ、そしてゲームが毎回のドロップ時に参照するデータベースの両方で修正されており、現在はテストによって27枚すべてのボードがそれぞれの鏡像対称性と99%帯に収まっているかを確認するようになっているため、同じミスが気づかれずに再発することはあり得ない。何かを巻き戻す必要はなかった:どのドロップも9行ハイリスクには一度も着地していなかった——これはリスクと行数セレクターの両方を変更しないと到達できない設定だからだ。これはそもそもテーブルを公開することの意義でもある——印刷されたテーブルの誤りは電卓を持った読者が見つけられるが、隠されたテーブルの誤りは見つけられない。
フェアネスチケットが示すもの、そして示さないもの
ここでのPlinkoは、着地するバケットがサーバー側で決定され、そのドロップが引いたシードペアのナンスとともにベット結果として返されるハウスゲームの一つであり、クライアントはそのバケットへの経路をアニメーションで表示するだけだ。シードパネルは他のオリジナルゲームと同様に、コミット済みのサーバーシードハッシュとクライアントシードを表示し、各ラウンドのチケットにはナンスが記載されているため、あるドロップを特定のコミット済みペアとラウンド番号に紐付けることができる。
ENGINE-VERIFIEDplinko/plinkoApi.ts:/betレスポンスにはresult(着地ビン、0〜行数)、multiplier、nonce(「このドロップが引いたシードペアのナンス。デモではペアが存在しないためnull」)が含まれる。チケットの型にはclientSeed、serverSeedHashed、nonceが含まれる。_shared/useSeedPair.ts:このペアはユーザーごと、かつ全オリジナルゲームで共通であり、独自のシードパネルを持ったことのないハウスゲーム(dice、plinko、mines、hilo、rps、baccarat、slot)で共有されている。
この記事が主張できることとできないことは正確に述べておくべきだ。倍率テーブルはソースコードから読み取ったものであり、バケットの確率は行ごとの公正なコインを前提とした計算であって、これはデモが実装している内容であり、Plinkoボードが意味するものそのものである。シードペアとナンスをバケットに変換するサーバー側の関数はクライアントリポジトリには含まれていないため、実際のライブドローの検証は、ここでそのコードを読むことによってではなく、チケットとコミット済みシードを通じて行われる——これは検証手順の解説記事が他のハウスゲームについても引いているのと同じ境界線だ。上記で価格付けされているものはすべて公開されたテーブルの性質であり、あるドロップがそれに従っていたかどうかを確認する場所がチケットである。
遊Plinko、ソースコード内のテーブル付き
8〜16行、3種類のリスク設定、上記で価格付けされたすべてのバケットPlinko →
よくある質問
Plinkoで×1,000のバケットに当たる確率はどれくらいですか?
16行ハイリスクボードでは、両端の各バケットにつき65,536分の1——どちらかの端に当たる確率は65,536分の2。ボールが16行すべてで同じ方向に跳ねる必要がある。
PlinkoのRTPはいくつですか?
エンジンの倍率テーブルと二項分布のバケット確率から計算すると、すべてのボードはドロップごとに約98.9%から99.2%の範囲で還元し、これは低・中・高リスクいずれも同様である。1枚のボード——9行ハイリスク——は、位置がずれた鏡像セルによりこの範囲から外れていた。これは本記事の執筆中に発見され、報告され、2026年9月4日に修正された。本記事はその実態を述べている。
ハイリスクはローリスクよりハウスエッジが悪いのですか?
いいえ。期待リターンは両方とも約99%である。ハイリスクは5回中約4回のドロップで×1未満を支払い、その価値を稀にしか出ない端のバケットに集中させる。ローリスクはほとんどのドロップで×1に近い額を支払う。合計は同じだが、形が異なる。
行数を増やすと確率は良くなりますか?
リターンは変わらず、どの行数でも約99%近くを維持する。行数が増えると、端はより稀になり、倍率もそれに比例して大きくなるため、乗り心地はより激しくなるが、割安にも割高にもならない。
なぜ中央のバケットは×1未満しか支払わないのですか?
それはボールが最も多く着地する場所だからだ——16行で19.6%、それより短いボードではさらに高い割合になる——そして、そこで×1以上を支払うゲームは、端の高倍率を賄うことができない。中央こそが、あらゆるPlinkoボードでハウスエッジが徴収される場所である。
Plinkoのドロップを検証できますか?
各ライブドロップは着地したバケットと、そのドロップが引いたナンスを返し、シードパネルにはコミット済みのサーバーシードハッシュとあなたのクライアントシードが表示される。チケットはあるドロップをそのペアとラウンドに紐付ける。サーバー側の導出処理自体はクライアントコードには含まれていないため、検証はチケットとコミットメントを通じて行われる。
出典・参考資料
- Betkyoゲームソース:plinko/plinkoApi.ts — PLINKO_MULT テーブル(8〜16行のL、M、H)、ビン=右バウンス数のルール、デモビンの導出、/betとチケットの形式; 共有シードペア用の_shared/useSeedPair.ts
- この記事内のすべての確率は、各行のバウンスが公平であると仮定した場合の二項係数 C(rows, k) ÷ 2^rows です。期待収益は、これらの係数で重み付けした倍率テーブルに基づいています。数値はいずれもサードパーティのオッズページからのものではありません。
この記事で紹介するゲーム