2026年3月25日水曜日

🎲正規分布に適合する乱数と通常の乱数の違いを教えてください

 ガウス分布(正規分布)に適合する乱数と通常の乱数(一般的には一様分布に従う乱数)の違いは、その生成方法と分布の形状にあります。

一様分布に従う乱数

一様分布に従う乱数は、特定の範囲内で均等に分布する乱数です。範囲内のどの値も同じ確率で生成されます。例えば、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アルゴリズム: より効率的な方法で、ガウス分布に従う乱数を生成するアルゴリズムです。

使用例と応用

  • 一様分布乱数: シミュレーションやモンテカルロ法、ゲーム開発など。

  • ガウス分布乱数: 統計学、機械学習、自然現象のシミュレーション、金融モデルなど。

以上の違いにより、用途や目的に応じて適切な乱数を選択し、使用することが重要です。