![見出し画像](https://assets.st-note.com/production/uploads/images/38999534/rectangle_large_type_2_765de2fcf0edd1c471a268bd0328c4dd.png?width=1200)
様々な確率分布を可視化するWebアプリの紹介(ガチャのシミュレーションに便利)
様々な確率分布をまとめて可視化するWebアプリを個人開発しました。URLはこちら!ガチャのシミュレーションや統計学の勉強にぜひ使っていただければ。
使い方
①URLにアクセス
②連続確率分布 continuous か離散確率分布 discrete を選択
③グラフ横軸の上下限 x_min, x_max を選択
④確率密度(質量)関数 pdf (or pmf) か累積分布関数 cdf を選択
⑤確率分布を選択(たとえば正規分布 norm)
⑥パラメータ args を入力(デフォルト値があれば省略可)
⑦他の確率分布を重ねる場合⑤~⑥を繰り返す
活用例
たとえば当たりキャラが8%の確率で排出されるガチャを1回ずつ回すとき、当たるまでにどれぐらい回す必要があるのか計算してみましょう。ここでは負の二項分布 nbinome を利用します。
上記の使い方のとおり
①URLにアクセス
②離散確率分布 discrete を選択
③確率質量関数 pdf (or pmf) を選択
④略
⑤負の二項分布 nbinome を選択
⑥パラメータとして 1,0.08 を入力
⑥は当たりを引く回数が n=1 回、あたりの確率が p=0.08 という意味です。確率分布を選択した時点でページ下部にヒント docstring が表示されるので参考にしてください(以下はパラメータ n, p が必須で、loc は省略可能という意味です。k は x_min, x_max の範囲で自動的に指定されます)。
結果は以下の通り、失敗回数0の(1回目であたる)確率が0.08と最大で、失敗回数が増えるほど確率は小さくなることが分かります。1回目で当たる確率が最大なら2,3回せば余裕で当たりますね!と思ったそこのあなたは③を累積分布関数 cdf に変えてください。4割の人は10回引いても当たらないことが分かるでしょう。
Q and A
Q1... 可視化できるグラフの一覧はある?
A1... おそらくscipy.statsのページでContinuous distributions, Discrete distributionsとして記載されているものは可視化できます。
Q2... どうやって実装しているのか?
A2... StreamlitというPythonのパッケージを、Oracle Cloud Infrastructureの無料仮想マシンで実装したkubernetes上で動かしています。ソースコードはGitHubをご覧ください。dockerやhelmで起動する方法も記載しています。
Q3... パラメータ指定がしにくいし、英語だから読みにくいのだが?それから、、、
A3... 最短時間で仕上げるために、使える機能をそのまま使いました。素材そのものの味をお楽しみください。
最後に
もともとこちらの記事を拝見しkubernetesの勉強をするついでに作っただけなのですが、Streamlitのすごさを実感しました。Pythonの知識は必要ですが逆にいうとJavaScriptなどの知識は不要でとっつきやすいので、おもしろいと思ったらぜひ皆さんも使ってみてください。
この記事が気に入ったらサポートをしてみませんか?