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がくることを想定しているのだろうか?想定していないのだろうか?
考えても分からない。深く考えないことにする。