Excel で乱数を発生させます

 RAND および RANDBETWEEN無作為な数値(疑似乱数) を得る関数です。( VBA を使わずに)いくつか並んだセルからランダムにデータを取り出すようなシステムを作るときには、必ずどちらかの関数を使うことになります。
 

RAND関数

 RAND関数 は 0 以上 1 未満の乱数を返します。
 この関数を使用するときには引数なしで

=RAND()

とだけ記述します。すると

0.732484648081945

のような値を返してきます。標準の書式設定で表示されるのは1部の数値ですが、実際にはセルに小数点以下 15 桁の数値が入っています。
 RAND関数が入力されたセルでは、ワークシートのどこかで計算が行われるたびに再計算されて新しい値が表示されます。「目がちかちかして煩わしいなと」と思った人は、こばとの作った FRAND関数 を使ってみてくださいな。

整数の乱数を得ます

 整数の乱数を発生させるのは後述する RANDBETWEEN関数を使うのが簡単なのですが、Excel 2003 以前のバージョンにはこの関数が用意されていないので(アドインで導入することはできます)、RAND関数を用いる方法も説明しておきます。いくつか方法があるのですが、たとえば小数点以下を切り捨てる INT関数の中に RAND関数を組込んで

=INT(10*RAND())

とした場合は、無作為に「 0 ~ 9 」の整数が返ってきます。これは RAND関数が 1 未満の値を返すために、10 倍して切り捨てた値が 10 未満となるからです。そこでもしとりうる値を「 0 ~ 10 」としたいのであれば、

=INT(11*RAND())

のように記述します。しかし「 1 ~ 10 」の値が欲しいのであれば、数値全体を底上げするために

=INT(10*RAND())+1

と書かなくてはなりません。このあたりはちょっと紛らわしいのですが、

=INT((最大値-最小値+1)*RAND())+1

という公式をメモしておくと、色々な数値で応用できます。たとえばサイコロと同じように「 1 ~ 6 」の数値が欲しいときは、

最大値 - 最小値 + 1 = 6 - 1 + 1 = 6

ですから、

=INT(6*RAND())+1

のように書きます。この方法は色々なところで紹介されているのですけど、他にも数値を切り上げる ROUNDUP関数を使うという手もあります。

=ROUNDUP(10*RAND(),0)

とすれば「 0 以上 10 未満」の数を切り上げて「 1 ~ 10 」の値を得ることができます。
 

RANDBETWEEN関数

 RANDBETWEEN関数 は整数の乱数を得る関数です。

=RANDBETWEEN(最小値,最大値)

と入力すると [最小値] 以上、[最大値] 以下の整数を無作為に返します。

=RANDBETWEEN(1,100)

と入力すると 1 ~ 100 の整乱数を得ることができます。
 RANDBETWEEN関数もまた、ワークシートで新しい操作が行われるたびに再計算されてしまうので、「うっとうしいな」と思った人は、こばとの作った FRANDBETWEEN関数 を使ってみてね。

コメントをどうぞ

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください