JavaScriptで正規乱数

Pocket

JavaScriptではMath.randomを使って乱数を発生させます。0から1までの間の数がランダムに返ります。発生の確率はどの数も同じなので一様乱数といいます。
一方で、ある値に偏った乱数がほしい場合があります。例えば20点満点のテストで平均点が10点で人数が最も多く、0点と20点は人数が少ないというような分布になるような乱数です。このような分布を正規分布といい、このように発生する乱数を正規乱数といいます。

正規乱数を発生させる最も簡単な方法は次の通りです。JavaScriptで書きました。

function random_norm() {
  //平均0、標準偏差1の正規乱数を返す。
  var s, i;
  s = 0;
  for(i = 0; i < 12; i++) {
    s += Math.random();
  }
  return s - 6;
}

厳密には疑似正規乱数ですが、かなり正規分布に近い結果が出ます。
0から1までの一様乱数を12個出して合計します。これから6を引きます。
これだけで平均が0で標準偏差が1の疑似正規乱数になります。
12個というのがちょうどよく、これより多いと平均値に近い値が出やすくなり標準偏差が1より小さくなります。

例えば次のように使うと平均が10で標準偏差が3の疑似正規乱数になります。

r = random_norm();
v = 10 + r * 3;

先ほどの20点満点のテストで平均点が10点という正規分布になります。

[ 2017年2月26日 | カテゴリー: JavaScript | タグ: , ]

« | »

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報