アヒルのある日

株式会社AHIRUの社員ブログです。毎週更新!社員が自由に思いついたことを書きます。

ガチャの確率データが正しいかを確認する

こんにちは!するどいプランナーです!
今回は確率のお話です。

ちょっと数学の話になってややこしいですが、大事なのはまず「結果を実務に利用できること」、次に「必要になったときにその考え方の根拠を説明できること」だと考えているので、結論だけでも覚えていただければと思います。

 

ということで結論から。
「1/Nの事象を100N回実施した時、結果が±20%以内に収まる確率は約95%」
以前どこかのHPで上記を見てから、ガチャ等の確率が伴う仕組みの確認を行う時の指針としていたのですが、改めてこの正しさを確認しておこうかと思います。


まずは概要を。
各項目についての説明はだいぶ省略しているので、細かいところが気になった場合は各用語を元に調べてみてください。

f:id:surudoi_ahiru:20201119144318j:plain

 



例として「2%で新キャラが排出されるガチャ」について考えてみましょう。 

◆二項分布

1000回ガチャを実行したときに獲得できる新キャラの数の「期待値np」は単純に
np = 1000 x 2% = 20体
ですね。 では「ちょうど20体」獲得する確率はというと、

f:id:surudoi_ahiru:20201119144437p:plain

となります。ExcelのBINOM.DIST()を使用しました。

同様に19体は?21体は?と計算して足し合わせるとと、
15~25体となる確率が78.84%となります。
これだと、シミュレータの結果が「12体」となったときに、データ設定をミスっているかどうか判断しにくいですよね。

 


◆正規分布

試行回数n、期待値np、分散np(1-p)が十分大きい場合正規分布N(np,np(1-p))で近似することができるとのことなので、正規分布で考えてみましょう。

np=1000 x 0.2 = 20
np(1-p) = 1000 x 0.2 x 0.98 = 19.6
標準偏差σ = 4.42

2σの信頼区間で信頼度は95.4%つまり
np - 2σ ~ np + 2σ
に収まる確率が95.4%なので、
20 - 2x4.42 ~ 20 - 2x4.42
=11.16~28.84
となり、
11体~29体排出される確率が大体95%ってことになりますね。

 

◆適切な試行回数は?

20体排出されるようなデータを設定したときに結果が11体~29体にばらけるような試行回数だと、テストとして少し不安になりますよね。
なので試行回数を増やしてばらつきを狭めましょう。

pが十分小さい時
np(1-p)≃np
とみなせるので、正規分布はN(np,np)で近似できそうです。
となるとnpのみによって「ばらけ具合」を計算できますね。

 

ということで計算した表がこちら。

f:id:surudoi_ahiru:20201119145129j:plain

np=100にするとばらけ具合が20%になるので、N=1/pで考えると無事
「1/Nの事象を100N回実施した時、結果が±20%以内に収まる確率は約95%」
が導き出せましたね。

 

もう少し試行回数を増やしてnp=400とすれば、

f:id:surudoi_ahiru:20201119144552p:plain

で2万回繰り返せば、結果が360体~440体に約95%の確率で収まる、となりますね。


◆まとめ

・学問的な内容について「結果を実務に使おう」
・「必要なときに根拠を説明できる」ようになろう
・1/Nの事象を100N回実施した時、結果が±20%以内に収まる確率は約95%

 

実際の開発では、
シミュレータで1万回実行したガチャの結果から、データ設定が正しいかどうか判断する、みたいなときに使えるのではないでしょうか。
ほんとはもう一歩踏み込んでベイズ統計とかで考えるべきなんでしょうけど、それほど細かい調整はそもそも気付けないはずなので実用的にはこの程度でよいかなと思います。

 

次回は物理のお話で「慣性モーメント」について書こうかなと思います。


※余談
元々統計学については挫折気味な分野だったこともあり、調べるのに苦労しました・・・。改めて勉強し直そうかなと思います。