ジャグラーの期待値を統計学的に推定する
ベイズ推定で最も期待値の高い台を探す
今週、友達と時間を潰すためにスロットを打ちに行った。ジャグラーってやつ。
時間潰すのが目的だったんだけど、どうせ打つなら期待値がプラスの台がいいだろうと思い、台の上に公開されているデータから設定を逆算して、一番儲かる台を探してみようという試みだ。
結論から言うと、かなり難しい。ハウス側のエッジがえぐすぎるし、そもそもこの記事でアルファを全部公開しちゃってるから、もうどうにでもなれって感じ。
モデル定義
まずモデルを定義したい。
台の上にはデータカウンターというものがあって、色々な数字が表示されている。その中で統計的に有用な観測変数は以下の3つだ。
スロットには「設定」という隠れパラメータがある。店が毎朝こっそり決めるやつで、1から6まである。これが推定対象だ。
各設定 に対して、BIGとREGそれぞれの当選確率が理論的に決まっている。
マイジャグラーVを打つと仮定して、各設定のスペック(解析値)はこうなる。
- 設定1: , , 合成
- 設定2: , , 合成
- 設定3: , , 合成
- 設定4: , , 合成
- 設定5: , , 合成
- 設定6: , , 合成
設定6だとBIGとREGが同じ確率。設定1だとREGがBIGの約1.4倍重い。この差を観測データから見抜けるかが勝負だ。
この数字はメーカーが公表している解析値で、出典はp-town.dmm.comやjugjug.net。信頼度は高いものとする。
「ぶどう確率は使わないの?」
読者の半分はここで「ぶどうは?」と思っただろう。結論から言うと、このモデルでは棄却した。
ジャグラーには「ぶどう」という小役があり、出現率に設定差がある(ガリぞう氏の調査値で設定1が1/5.90、設定6が1/5.66)。一見使えそうだが、KLダイバージェンスを比較するとぶどうの判別力は1ゲームあたり で、BIG+REG合算の の約1/3.5しかない。
さらに致命的なのは、ぶどう確率はメーカー非公表であり、業界で流通しているのはガリぞう氏の実測による推定値だという点だ。つまり「推定パラメータの推定値」でモデルを組むことになり、モデルリスクが二重構造になる。判別力1/3.5のファクターのためにモデルの信頼性を毀損するのは割に合わない。検討した上で棄却した。
尤度関数を立てる
各ゲームは独立なベルヌーイ試行だ。レバーを叩くたびに乱数が走って、BIGかREGか何も無しかが決まる。確率に記憶はない。500Gハマっても、次の1Gの当選確率は初手と同じ。モンテカルロの誤謬を犯しちゃいけない。
BIGとREGの発生を独立な二項分布で近似すると、設定 のもとでの尤度関数はこう書ける。
実装上は対数を取りたい。二項係数は設定に依存しないので消える。
ここまでは学部の統計学。問題はここから先だ。
ベイズの定理で設定を推定する
知りたいのは「この台の設定は何か」だ。観測データ を見たあとの事後確率をベイズの定理で求める。
は事前分布。ここが面白いところで、「店がどういう傾向で設定を入れるか」というマーケットビューが入る。
一様事前(全設定等確率)なら 。でも現実のパチンコ店は設定1と2を大量に入れて、6なんてほとんど使わない。通常営業の事前はこんな感じだろう。
この事前分布の選択が、あとで結論をひっくり返すことになる。覚えておいてほしい。
実装上の注意: log-sum-exp trick
が大きいと が天文学的に小さくなってアンダーフローする。対数空間で計算して最大値を引く。
Black-Scholesの数値実装でもやるやつだ。

なぜ設定判別は難しいのか
ここからが本題。「3000Gも回したのになんで設定わかんないの?」という問いに定量的に答えたい。
Signal-to-Noise Ratio
設定1と設定6を判別したいとする。シグナルは期待値の差、ノイズは二項分布の標準偏差だ。
BIGとREGそれぞれについて計算するとこうなる(Python検証済み)。
- BIG:
- REG:
(95%信頼度)に必要なゲーム数は:
- BIGだけで判別:
- REGだけで判別:
- 両方使って:
ちょっと待ってほしい。BIG確率だけで設定を当てるには3万ゲーム必要だ。1日8000G回すとして約4日間。一方REGなら約4000Gで足りる。
REGの情報効率はBIGの7.4倍。 これが「REGを見ろ」と言われる定量的な根拠だ。スロットの民が経験的に知っていることを、数学が裏付けている。感覚は数式より鋭いのかもしれない。
隣接設定はほぼ判別不能
さらにエグいのが隣接設定の判別だ。設定4と設定3を3000Gで区別できる確率は11.8%。ほぼランダム。設定6対設定1という最も楽なケースでも61.5%しかない。

つまり3000Gのデータでは「設定6かもね」程度のことしか言えない。「設定4です」なんて口が裂けても言えない。
BIG:REGが1:1に収束する速度
今日僕が打った台はBIG 15回、REG 15回で「おっ、1:1じゃん、高設定っぽい!」と思った。これがどれくらい信用できるか計算してみた。
デルタ法で BIG/REG 比率の95%信頼区間を求めるとこうなる。
- 3,000G: 95%CI
- 10,000G: 95%CI
- 30,000G: 95%CI
3000Gで BIG:REG が1:1に見えても、真の比率は0.23から1.77の範囲で振れうる。全然収束してない。「BIGとREGが同数だから高設定!」と喜ぶのは、サンプル3000の平均値を信じてボラティリティを無視するトレーダーと同じだ。
逐次確率比検定: いつやめるべきか
「何ゲーム回したら判定できるか」を事前に決める固定サンプル検定もいいけど、スロットでは「打ちながらリアルタイムで判定したい」。そこでWaldの逐次確率比検定(SPRT)を使う。
各ゲーム後に累積対数尤度比を更新していく。
閾値は第一種過誤 、第二種過誤 で設定すると:
- なら 設定6と判定(打ち続ける)
- なら 設定1と判定(撤退)
- その間なら保留(もう少し回す)
真に設定6の台に座っている場合、平均 3,794G で判定に到達する。固定サンプル検定の約5000Gより24%効率的だ。
実装したら面白いと思う。ゲームごとに累積LLRをプロットして、境界を超えた瞬間にアラートを出す。スロット版のリアルタイムリスク管理システムだ。
データソースの信頼性: 何を信じて何を捨てるか
モデルの精度は入力データの質に依存する。使える情報を信頼度順に並べるとこうなる。
採用すべきデータはこの2つ。
- メーカー公表の解析値(ボーナス確率): 最も信頼度が高い。検定機関を通過した公式値。p-town.dmm.comやslobase.jpで確認可能
- 大規模シミュレーション(数百万G以上): 大数の法則により理論値に収束。信頼できる
条件付きで使えるデータ。
- 店舗の過去データ: 事前分布の構築に有用。ただし店は設定配分を変える。レジームチェンジに注意しないといけない
棄却すべきデータ、意味のないデータは以下3つ。
- 個人ブログの少数サンプル実戦値: この記事のSNR分析が示す通り、BIG確率の95%判別には3万G必要。数千Gの実戦値に統計的有意性はない
- 体感やオカルト: 「そろそろ来る」「台の調子が変わった」はベルヌーイ過程の無記憶性に反する。全て棄却しないといけない
- 雑誌の丸め値: 有効数字2桁に丸められると設定間差が消失する。原典にあたるべき
小役確率については上述の通りモデルから棄却した。
4000回転でBIG=REGなら勝てるのか
全てのピースを組み合わせて、最終的な問いに答えよう。
「4000G回してBIGとREGが同数だったら、期待値はプラスなのか。」
答えは合成確率による。BIG:REGが同数でも、トータルのボーナス回数が少なければ意味がない。Python3で全パターン計算した結果がこれだ(一様事前)。
- 合成 : これは意味がない
- 合成 : コイントスと変わらない
- 合成 : ちょっと優勢
- 合成 : 悪くない
- 合成 : かなり良い
- 合成 : ほぼ確信できる
ところが通常営業の事前(低設定多め)に変えると:
- 合成 :
- 合成 :
- 合成 :
事前分布で結果がひっくり返る。 「店がどういう傾向か」という情報が、ボーナスデータそのものと同じくらい結論を左右する。
実用的な判定基準
合成1/120以下でBIG:REG同数、4000G以上回っているなら、75%以上の確率でエッジがある(一様事前の場合)。通常営業事前ではもう少し厳しく見る必要がある。
5つの帰結
- REGの情報効率はBIGの7.4倍。 設定判別で最も重要な単一指標はREG確率
- 3,000G以下に統計的有意性はない。 隣接設定の判別は3000Gで11.8%。ほぼ不可能
- BIG:REG比率の収束は極めて遅い。 意味のある収束には数万G必要
- 事前分布は結論を根本的に変える。 店の傾向情報はデータと同程度に重要
- SPRTは固定サンプル検定より24%効率的。 「いつやめるか」にはSPRT
僕はどうしたか
14,000円勝ってステーキ食べて帰った。
友達には「つまんないやつ」と言われた。BIG連チャン中に席を立ったからだ。でもエッジが見えない台で含み益を握って撤退するのは、最適戦略だと思う。
正直に言うと、スロットは「音と光の出るサイコロ」だった。でも友達と無駄な時間を過ごすっていう効用は、期待値じゃ測れないものだと思う。