点の分布・サンプリング

ガウス分布サンプリング

Gaussian / Normal Sampling

中心が多い分布で誤差やばらつきを作る。

10 / 10

インタラクティブデモ

デモを準備しています…

ガウス分布サンプリング

ドラッグで視点を回転、Ctrl(⌘)+ スクロールでズーム。タッチ操作は 2 本指です。

ひとことで

平均の近くの値がいちばん多く出て、外れるほど急にまれになる、つりがね形の分布(正規分布、ガウス分布)に従う乱数の作り方です。銃弾の散らばり、ダメージのぶれ、キャラクターの身長の個体差など、自然なばらつきの多くはこの形をしています。一様な乱数では「中心に集まる」感じが出ません。代表的な作り方が、2 つの一様乱数から 2 つの正規乱数を作るボックス=ミュラー法です。

ゲームでの使いどころ

  • 弾のばらつき・反動:狙いの中心に多く当たり、たまに大きく外れる散らばり。撃ち続けると σ\sigma を大きくして精度を落とす。
  • ダメージ・能力値のぶれ:「平均 100、たいてい 90〜110」のような値。一様乱数より平均の近くに集まり、極端な値がまれになる。
  • 群れや配置の個体差:木の高さ、群衆の歩く速さ、草の傾きに少しずつ違いを付ける。
  • 動きの揺れ:手ぶれ、カメラの揺れ、AI の狙いの誤差。

しくみ

平均 μ\mu、標準偏差 σ\sigma の正規分布の確率密度は

p(x)=1σ2πexp⁡ ⁣(−(x−μ)22σ2)p(x) = \frac{1}{\sigma\sqrt{2\pi}}\exp\!\left(-\frac{(x - \mu)^2}{2\sigma^2}\right)

です。1 次元では ±1σ\pm 1\sigma に約 68%、±2σ\pm 2\sigma に約 95%、±3σ\pm 3\sigma に約 99.7% が入ります。2 次元の的の上では、半径 kσk\sigma の円の内側に入る割合は 1−e−k2/21 - e^{-k^2/2} で、1σ で約 39%、2σ で約 86%、3σ で約 99% です。

ボックス=ミュラー法:2 次元の正規分布は、中心からの距離と角度に分けると扱いやすくなります。角度は一様、距離の 2 乗は指数分布になるので、逆 CDF 法で

r=−2ln⁡u1,θ=2πu2,(z1,z2)=(rcos⁡θ, rsin⁡θ)r = \sqrt{-2\ln u_1}, \qquad \theta = 2\pi u_2, \qquad (z_1, z_2) = (r\cos\theta,\ r\sin\theta)

とすれば、z1,z2z_1, z_2 は独立な標準正規分布(平均 0、分散 1)に従います。x=μ+σzx = \mu + \sigma z で好きな平均と広がりにします。

一様乱数の和:一様乱数を何個か足すと、中心極限定理により、和はつりがね形に近づきます。3 個でもかなり近く、12 個足して 6 を引く方法は昔からの手軽な近似です。ただし、足した個数で決まる範囲の外には決して出ません。

実装のポイント

  • 2 つとも使う:ボックス=ミュラー法は一度に 2 つの値を作ります。1 つしか要らないときは、もう 1 つを次回用に取っておくと無駄がありません。
  • 範囲を切る:まれに非常に大きな値が出ます。ダメージなどでは ±3σ\pm 3\sigma で打ち切る(範囲外なら引き直す)と、極端な結果を防げます。
  • 3 次元の方向:正規乱数を 3 つ並べて正規化すると、球面上で一様な方向になります。
  • GPU では:log や cos が気になる場合は、一様乱数 3〜4 個の和で十分なことが多いです。

つまずきやすい点

  • u1 = 0 で無限大:乱数が 0 を返すと ln⁡0\ln 0 で無限大になります。0 を避けるか、1−u1 - u を使います。
  • 分散と標準偏差の取り違え:σ\sigma は標準偏差です。分散 σ2\sigma^2 を渡すと、ばらつきがまったく違う大きさになります。
  • 半径だけ正規分布にする:2 次元の散らばりを作るのに、半径を正規分布、角度を一様にすると、中心に点が集まりすぎます(半径 0 の付近の面積は小さいため)。2 つの軸をそれぞれ正規分布にします。

デモで試すこと

  1. 的に弾が当たり続けます。「正規分布」では中心に多く集まり、外へ行くほどまれになります。左下で、1σ・2σ・3σ の円の内側に入った割合が、正規分布の値(39% / 86% / 99%)に近づくことを確かめてください。
  2. 右下のヒストグラムは横方向のずれで、点線のつりがね形と重なります。
  3. 「一様乱数 3 個の和」も見た目はほとんど同じですが、3σ の円より外には決して当たりません。
  4. 「一様(四角)」と「一様(円盤)」は、同じ大きさのばらつきでも中心への集まりがなく、狙っている感じがしません。「ばらつきの大きさ σ」を変えると、円の大きさも一緒に変わります。

参考資料

Fast Poisson Disk Sampling in Arbitrary Dimensions ↗

分野全体の資料で、この項目を直接扱っているとは限りません。