読者です 読者をやめる 読者になる 読者になる

Excelで正規分布に従う乱数列を生成する

excel

このエントリーをはてなブックマークに追加


rand()関数とnorminv()関数というのを組み合わせると、任意の正規分布に従う乱数列を生成できるらしい。
例えば平均70、標準偏差10の正規分布に従う乱数列は以下のようにして生成できる。

=NORMINV(RAND(), 70, 10)

いくつかのセルに上の式をコピーして、以下の乱数列を生成できた。70を山にしたそれっぽい分布になっている。

72.83566238
68.66780391
78.57591694
68.0377736
62.79601192
68.92418382
72.00514398

どうでもいい話

MSDNのヘルプを見ると微妙な疑問点が…。

MSDNのヘルプによると、RAND()は「0 以上で 1 より小さい実数の乱数を発生させます」と説明がある。ということはNORMINV()の第一引数に0が入る可能性があるわけだが、実際にNORMINV()の第一引数に0を入れると#NUM!になってしまう…。
NORMINV()をヘルプで引くと「確率 < 0、または確率 > 1 である場合、エラー値 #NUM! が返されます。 」と書いてあり、確率=0のときについては言及がない。NORMINV()は第一引数に0がくることを想定しているのだろうか?想定していないのだろうか?

考えても分からない。深く考えないことにする。