ポーカー式のカジノゲームで使われる「複数点マーチン」の賭け表を、モンテカルロ法で大量に試行し、勝率・破産率・収支の分布として可視化するブラウザアプリ。
デモ: https://kozakikaoru.github.io/martingale_simulator/
- 賭け方の良し悪しを試行回数で裏取り — 同じ賭け表を大量に回した結果として、勝率・破産率・収支を数値で比較できる
- 編集するそばから収支が再計算 — 賭ける役と金額、増額の段階を組み替えると、累計の負け額や当たったときの収支がその場で更新される
- 重い計算中も操作が固まらない — 試行はバックグラウンドで実行し、進捗を見ながら待てる
- 平均では見えないばらつきまで可視化 — 最終資金や最大ハマりを分布として描き、リスクの裾野まで把握できる
- インストール不要、どの端末でも動く — ブラウザだけで完結し、PC とスマートフォンの両方で使える
| 設定・マーチン表 | リザルト |
|---|---|
![]() |
![]() |
- 初期資金 — 1 セッションを始めるときの所持金。
- 最大ループ局数 — 1 セッションで回す上限の局数。1 局 30 秒換算での合計対局時間も併せて表示する。
- 試行セッション数 — モンテカルロで回すセッションの本数。多いほど結果が安定する。
- 回収軸 — 表全体で 1 つだけ選ぶ、外したら次の行で賭け金を増やして取り返す役。8 種から選ぶ。
- 自由枠 — 全行で金額を一定に賭ける枠で、利益の源になる。置かずに回収軸だけで賭けることも、複数置いて多点賭けにすることもできる。10 種から選ぶ。
- 行(段階) — 1 行が回収軸の 1 段階の賭け金。表の最下部から 1 / 5 / 10 行ずつ追加でき、各行は右端のボタンで削除できる。
- 最小ベット数 — 50 / 100 / 500 / 1000 から選ぶ、自動入力と増減の単位。
- 自動生成 — 1 局あたりの合計ベットが上限の目安(約 47,000)に達するまで、行を自動で積む。各行の回収額は「当たれば収支がマイナスにならない最小額」を最小ベット数の単位で求め、入力済みの行は上書きする。
- 各行は 合計ベット・累計の負け額・当たったときの払い戻し・収支 をその場で計算して表示する。
| 賭け | オッズ | 回収軸 | 自由枠 |
|---|---|---|---|
| カウボWIN・ブルWIN | ×2 | ○ | ○ |
| タイ | ×20 | ○ | ○ |
| ワンペア・ハイカード | ×2.2 | ○ | ○ |
| ツーペア | ×3.1 | ○ | ○ |
| スリーカード・ストレート・フラッシュ | ×4.7 | ○ | ○ |
| フルハウス | ×20 | ○ | ○ |
| スーコネ | ×1.66 | ○ | ○ |
| ペア | ×8.5 | ○ | ○ |
| フォーカード・ロイフラ・ストフラ | ×248 | — | ○ |
| AA | ×100 | — | ○ |
オッズは賭け金を含む払い戻し倍率(例: ×2 は賭け金の 2 倍が戻る)。フォーカード系と AA は配当が大きいぶん、回収軸には選べず自由枠でのみ賭けられる。
- 回収軸が当たれば 1 行目に戻る。外れれば次の行へ進み、最終行で外れた場合も 1 行目に戻ってループする。
- 自由枠は毎局そのまま賭け続ける。
- 次の局の合計ベットを払えなくなった時点で 破産 として終了する。設定した最大ループ局数に達した場合も終了する。
- 勝率 / 破産率 — 上限の局数まで回して資金が初期より増えていたセッションの割合と、資金切れで終わったセッションの割合。
- 期待値 — 1 セッションあたり、および 1 局あたりで平均どれだけ増減したか。
- 平均ループ数 / 平均対局時間 — 1 セッションで回った平均の局数と、その秒換算の時間。
- 分布グラフ — 最終資金と最大ハマり(資金の最大の落ち込み)を、セッション全体のばらつきとしてヒストグラムで描く。
| レイヤー | 採用技術 |
|---|---|
| フレームワーク | React 18 |
| ビルド | Vite 5 |
| 言語 | TypeScript(strict) |
| グラフ | Recharts |
| 並列計算 | Web Worker(ES module) |
| テスト | Vitest + Testing Library |
| 静的解析 | ESLint(typescript-eslint) |
| 配信 | GitHub Pages(GitHub Actions で自動デプロイ) |
# 1. 依存をインストール
npm install
# 2. 開発サーバー起動
npm run dev
# → http://localhost:5173サーバーや API キーは不要。ブラウザで開き、設定と賭け表を編集して「シミュレーション実行」を押すと、勝率・破産率・期待値と、最終資金・最大ハマりの分布が表示される。
Node.js は 20+ を推奨(Vite 5 / ビルドの要件)。
npm run dev # 開発サーバー
npm run build # 本番ビルド(dist/ を生成)
npm run preview # ビルド成果物をローカル配信して確認
npm run test # ユニットテスト(Vitest)
npm run lint # ESLint
npm run validate # 役評価エンジンの確率を理論値と照合src/
├ sim/ # シミュレーションコア(純 TS・UI から独立)
│ ├ cards.ts / round.ts # カードとラウンドの生成
│ ├ evaluator.ts # 役判定
│ ├ bets.ts # ベットの当たり判定とオッズ
│ ├ martingale.ts # マーチン進行とモンテカルロ集計
│ ├ prng.ts # 決定論的な乱数生成器
│ ├ validate.ts # 理論確率との照合
│ └ index.ts # 公開 API(UI はこれだけを import)
├ worker/ # モンテカルロを回す Web Worker とメッセージ定義
├ components/ # 画面(設定 / 表ビルダー / 実行 / リザルト / グラフ)
├ ui/ # 表モデル・整形・永続化フックなど
└ styles/theme.css # デザイントークン(カジノテーブルのテーマ)
- 計算も保存もすべてブラウザ内で完結し、サーバーを持たない。入力やシミュレーション結果が外部へ送信されることはない。
- 設定と賭け表はブラウザ保存(localStorage)にのみ残り、別端末やサーバーへは同期しない。
- アクセス解析やトラッキングの仕組みは入れていない。

