Javascriptで正規分布の配列を作る

Javascriptには一様分布させるためのMath.randomというメソッドはありますが、正規分布用のメソッドはありません。

そこで ボックス=ミュラー法と呼ばれるアルゴリズムを用いて、一様分布に従う確率変数から標準正規分布に従う確率変数を生成させたいと思います。

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
</head>
<body>
  <p>標準正規分布の配列:</p>
  <pre id="nd"></pre>

  <script> 
    const nd = [];

    function getRandomValue() {
      var x, y, z;
      for (let i = 0; i < 20; i++) {
        x = Math.random();
        y = Math.random();
        z = Math.sqrt(-2 * Math.log(x)) * Math.cos(2 * Math.PI * y);
        nd.push(z);
      }
    }

    // getRandomValue()を呼び出して20回発生させる
    getRandomValue();

    // ndを改行で区切って表示する
    document.getElementById('nd').textContent = nd.join('\n');
  </script>
</body>
</html>

標準正規分布の配列:



  






ボックス=ミュラー法 - Wikipedia
Javascriptで正規分布 - Qiita
平均付近に集中するような値の分布を「正規分布」といいます。「ガウス分布」ともいいます。Javascriptには一様分布させるためのMath.randomというメソッドは存在していますが、正規分布…
Box-Muller法で発生させた乱数で正規分布を描く - プログラマーになりたい!
Box-Muller法で正規分布に従う乱数を発生させて、その乱数で実際に正規分布をヒストグラムで描画するプログラムを作る。これは、平均0、分散1の標準正...

コメント

タイトルとURLをコピーしました