ソーシャルゲームのガチャでは、単純な排出率だけでなく天井システムや確率変動が存在するため、目玉キャラクターの獲得確率を計算するのは意外と難しくなります。特に「当たったら天井カウントがリセットされる」タイプでは、単純な二項分布が使えません。この記事では、このようなガチャの確率計算の考え方を解説します。
まずは1周の排出率を求める
STEP1~4が繰り返される場合、1周は40連です。
| STEP | 単発排出率 | 10連で1回以上当たる確率 |
|---|---|---|
| STEP1 | 0.5% | 約4.89% |
| STEP2 | 0.7% | 約6.78% |
| STEP3 | 0.5% | 約4.89% |
| STEP4 | 0.5% | 約4.89% |
ただし実際の計算では「10連で当たるか」ではなく、「各連ごとの当たり・外れ」を追跡する必要があります。
天井システムが存在するため、単純な平均排出率だけでは獲得数分布を正確に求められません。
天井があると二項分布では計算できない理由
通常のガチャであれば、900連の結果は二項分布で近似できます。
しかし今回の条件では、目玉が出た瞬間に天井カウントが0へ戻り、450連連続で出なかった場合は強制的に1体獲得となります。
つまり各抽選が独立ではなくなります。
天井リセットが存在するため、前回いつ当たったかが次回の確率計算に影響します。
実際はマルコフ連鎖や動的計画法で求める
この種の問題は確率論では「状態遷移問題」として扱われます。
状態として
- 現在の天井カウント(0~449)
- 現在までの獲得数
- 現在のSTEP位置
を保持しながら、1連ごとに状態を更新していきます。
プログラムでは動的計画法(DP)やマルコフ連鎖を利用することで、900連終了時点の獲得数分布を高精度で算出できます。
900連で考えると最低保証が発生する
900連という回数は天井450連のちょうど2倍です。
極端な例として900連の間に一度も自力排出がなければ、450連目と900連目で天井獲得が発生し、最低でも2体獲得になります。
一方で途中で目玉が出ると天井カウントがリセットされるため、獲得数の分布は通常のガチャより中央付近に集まりやすくなります。
その結果、「0体」の確率は理論上0%となります。
自力で計算する場合の考え方
ExcelやPythonを使う場合は次の流れで計算できます。
- 各連の排出率をSTEPに応じて設定する
- 天井カウントを0~449で管理する
- 当選時は獲得数+1、カウント0へ戻す
- 450連連続外れなら獲得数+1、カウント0へ戻す
- 900連まで状態遷移を繰り返す
この方法なら900連だけでなく、1200連や1800連など任意の回数についても獲得数分布を求められます。
まとめ
STEPごとに排出率が変わり、さらに450連天井と当選時リセットが存在するガチャは、通常の二項分布では計算できません。正確な「900連時点で0体・1体・2体・3体・4体獲得している確率」を求めるには、マルコフ連鎖や動的計画法による状態遷移計算が必要です。特に天井カウントのリセットがある場合は、前回の当選位置が結果に影響するため、プログラムやシミュレーションを利用するのが最も現実的な方法となります。


コメント