見出し画像

様々な確率分布を可視化するWebアプリの紹介(ガチャのシミュレーションに便利)

様々な確率分布をまとめて可視化するWebアプリを個人開発しました。URLはこちら!ガチャのシミュレーションや統計学の勉強にぜひ使っていただければ。

使い方

画像1

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 は省略可能という意味です。kx_min, x_max の範囲で自動的に指定されます)。

画像3

結果は以下の通り、失敗回数0の(1回目であたる)確率が0.08と最大で、失敗回数が増えるほど確率は小さくなることが分かります。1回目で当たる確率が最大なら2,3回せば余裕で当たりますね!と思ったそこのあなたは③を累積分布関数 cdf に変えてください。4割の人は10回引いても当たらないことが分かるでしょう。

画像3

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などの知識は不要でとっつきやすいので、おもしろいと思ったらぜひ皆さんも使ってみてください。

この記事が気に入ったらサポートをしてみませんか?