ガウス分布(正規分布)に適合する乱数と通常の乱数(一般的には一様分布に従う乱数)の違いは、その生成方法と分布の形状にあります。
一様分布に従う乱数
一様分布に従う乱数は、特定の範囲内で均等に分布する乱数です。範囲内のどの値も同じ確率で生成されます。例えば、0から1の範囲で一様分布に従う乱数は、0から1の間の任意の数値が均等な確率で現れます。
特徴:
全ての値が等しい確率で選ばれる。
平均値は範囲の中央。
標準偏差は範囲の幅に依存。
ガウス分布(正規分布)に従う乱数
ガウス分布に従う乱数は、平均値を中心に対称的なベル型の曲線を描く分布に従う乱数です。この分布は多くの自然現象や測定値の誤差などに見られます。
特徴:
値の多くが平均値周辺に集中し、平均値から離れるにつれて値が出現する確率が減少する。
分布は平均値(μ)と標準偏差(σ)によって決定される。
平均値(μ)は分布の中心で、標準偏差(σ)はデータの広がりを示す。
具体的には、約68%の値が平均値の±1標準偏差内に、約95%の値が平均値の±2標準偏差内に、約99.7%の値が平均値の±3標準偏差内に収まる。
生成方法の違い
一様分布の乱数は比較的簡単に生成できますが、ガウス分布の乱数を生成するためには追加の変換が必要です。以下は一般的な生成方法の例です:
一様分布乱数の変換: ボックス=ミュラー変換や極座標法を使って、一様分布の乱数からガウス分布の乱数を生成します。
ボックス=ミュラー変換では、二つの独立した一様分布乱数を使って、二つの独立した正規分布乱数を生成します。
function boxMullerTransform() {
let u = Math.random();
let v = Math.random();
let z0 = Math.sqrt(-2.0 * Math.log(u)) * Math.cos(2.0 * Math.PI * v);
let z1 = Math.sqrt(-2.0 * Math.log(u)) * Math.sin(2.0 * Math.PI * v);
return z0; // または z1
}
Zigguratアルゴリズム: より効率的な方法で、ガウス分布に従う乱数を生成するアルゴリズムです。
使用例と応用
一様分布乱数: シミュレーションやモンテカルロ法、ゲーム開発など。
ガウス分布乱数: 統計学、機械学習、自然現象のシミュレーション、金融モデルなど。
以上の違いにより、用途や目的に応じて適切な乱数を選択し、使用することが重要です。