このプロジェクトの目的は、分布の可視化とアルゴリズムの可視化です。
3D 物理演算を使って、確率分布の生成過程そのものと、そこに至る手順や手法の違いを見せるウェブアプリを作ります。
このプロジェクトの狙いは、分布の形をグラフとして描くだけでなく、 「玉がどう落ちるか」「どこで分岐するか」「どう集積するか」を空間的に見せること。
- 3D を基本にする
- 物理演算で粒子の運動を表現する
- 分布ごとに専用の舞台を用意する
- 結果をヒストグラムと理論曲線で確認する
- 正規分布: Galton board / パチンコ玉
- 二項分布: 左右に分岐する多段ピンボード
- 超幾何分布: 戻さない抽選箱
- レア到達シミュレーション: 戻す抽選で初当たりまでの回数を集計
- ポアソン分布: 3D 空間への着弾点マップ
- 指数分布: 次のイベントまでの待ち時間を落下距離へ変換
- ガンマ分布: 複数回の待ち時間を積み上げる多段ゲート
- ベータ分布: MVP では外す
- 対数正規分布: 乗法的な増減を伴うバウンス
- 正規分布
- 二項分布
- 超幾何分布
- ポアソン分布
- 指数分布
- ガンマ分布
- 対数正規分布
- 一様分布
- 離散一様分布
- Galton board を 3D 物理シーンで実装する
- 二項分布を Galton と統合して
pの違いで見せる - 超幾何分布で復元あり / なしの差を見せる
- ポアソン分布は着弾点マップとして作る
- 連続分布を「物理現象の見た目」に変換する
- 見た目の工夫として、歪み・層構造・外力を足す
- Galton board
- SciPy stats overview
- scipy.stats.norm
- scipy.stats.binom
- scipy.stats.hypergeom
- scipy.stats.poisson
- scipy.stats.expon
- scipy.stats.gamma
- scipy.stats.beta
- scipy.stats.lognorm
- scipy.stats.uniform
- scipy.stats.randint
ルートの index.html を開くと、3D 風の分布可視化プロトタイプを確認できる。
分布切替、パラメータスライダー、再生成、理論曲線の重ね描き、planck.js による Galton board の実衝突を含む。
Galton board のピン・ボール・ガードレール比率をまとめたメモは
galton-board-physics-notes.md に置いてある。
sidsenthilexe/reactor のような中性子連鎖反応シミュレーターを使う場合、Poisson / Exponential / Gamma は同じ本体に計測レイヤーを1枚載せるだけで扱える。
- Poisson: 単位時間内の核分裂回数を数える
- Exponential: 核分裂イベント間の時間差を測る
- Gamma:
k回目の核分裂までの累積時間を測る
この3つは、核分裂イベントの発生時刻を記録できれば、同じログから後処理で取得できる。 Lognormal だけは掛け算的な増減を持つ別モデルが必要になる。