概要
「適当に数字をばらまきたい」「サンプルデータを作りたい」「シミュレーション用にランダムな値がほしい」
そんなときに使うのが RAND 関数です。
RAND は、
0以上1未満の乱数(例:0.123456…のような小数)を返す関数です。
しかも、ワークシートが再計算されるたびに値が変わる“生きている数式”というのが大きな特徴です。
RAND 関数の基本
書式と戻り値
RAND の書式はとてもシンプルです。
=RAND()
引数は一切ありません。
この式をセルに入力して Enter を押すと、0以上1未満のランダムな小数が返ってきます。
例:
0.02458
0.73591
0.99912
といった具合に、毎回違う値が出てきます。
「揮発性関数」であること
RAND の一番のクセは、「計算のたびに値が変わる」ことです。
・別のセルに何か入力した
・F9 キーで再計算した
・ブックを開き直した
こうしたタイミングで、RAND を使っているセルはすべて新しい乱数に置き換わります。
シミュレーションには便利ですが、「一度決めた乱数を固定して使いたい」ときは工夫が必要になります。
RAND から任意の範囲の乱数を作る考え方
基本の変換式「a〜b の乱数」
RAND は 0以上1未満の乱数を返しますが、そのままだと使いづらいことが多いです。
そこでよく使うのが、次の変換式です。
=RAND()*(b-a)+a
a:最小値
b:最大値
この式で、「a以上b未満」の乱数が作れます。
例えば、0〜100 の乱数なら:
=RAND()*100
50〜100 の乱数なら:
=RAND()*50+50
というように変形します。
整数の乱数を作る
RAND は小数を返すので、「整数の乱数」が欲しいときは、
ROUNDDOWN や INT などと組み合わせます。
0〜9 の整数乱数なら:
=ROUNDDOWN(RAND()*10,0)
0〜99 の整数乱数なら:
=ROUNDDOWN(RAND()*100,0)
という形で作れます。
「掛ける数」で範囲を決め、「ROUNDDOWN で小数を落とす」という発想です。
乱数を「固定」したいときのテクニック
RAND は再計算のたびに値が変わるので、
「このときに出た乱数をそのまま“値”として残したい」という場面がよくあります。
代表的なやり方は 2つです。
1つ目は、「数式を値に変える」方法です。
RAND を入力したセルをコピーし、「値として貼り付け」をすると、その時点の乱数が固定されます。
2つ目は、数式バーで =RAND() と入力した状態で F9 キーを押す方法です。
F9 を押すと、その場で乱数が“計算された値”に置き換わり、数式ではなく数値として残ります。
どちらも、「もう変わってほしくない乱数」を確定させるときに使う定番テクニックです。
RAND の実務的な使いどころ
サンプルデータ・テストデータの作成
「とりあえず適当な数値が並んでいてほしい」というとき、
RAND はとても手軽です。
例えば、A2:A101 に =RAND() を入れてコピーすれば、
0〜1 の乱数が100個並びます。
そこから掛け算や四捨五入で、売上・点数・割合など、いろいろな“それっぽい”データを作れます。
無作為抽出(サンプリング)
データの行ごとに RAND を入れておき、
その列で並べ替えをすると、「ランダムな順番」に並び替えられます。
上から何件かを“抽出サンプル”として使う、というのがよくあるパターンです。
シミュレーション・試行の繰り返し
RAND は「再計算のたびに値が変わる」ので、
売上予測やリスクシミュレーションなどで「何パターンも試したい」ときに向いています。
F9 を押すたびに乱数が変わり、
それに連動してグラフや集計結果も変わる――
こういう“動くシミュレーションシート”を作るときの土台になります。
RAND のテンプレート集
0〜1 の乱数(基本形)
=RAND()
0〜100 の乱数(小数)
=RAND()*100
50〜100 の乱数(小数)
=RAND()*50+50
0〜9 の整数乱数
=ROUNDDOWN(RAND()*10,0)
a〜b の乱数(小数)
=RAND()*(b-a)+a
例題
問題1
0以上1未満の乱数を 1 つ生成したいとします。
セルに入力する式を書いてください。
=RAND()
問題2
0以上100未満の乱数(小数)を生成したいとします。
セルに入力する式を書いてください。
=RAND()*100
問題3
0〜9 の整数の乱数を 1 つ生成したいとします。
RAND と ROUNDDOWN を使って式を書いてください。
=ROUNDDOWN(RAND()*10,0)
問題4
50以上100未満の乱数(小数)を生成したいとします。
RAND を使って式を書いてください。
=RAND()*50+50
問題5
RAND で生成した乱数を「その時点の値で固定」したいとします。
どのような操作をすればよいか、考え方を簡潔に答えてください。
1つのやり方は、RAND を入力したセルをコピーし、「値として貼り付け」することです。
もう1つは、数式バーで =RAND() と入力した状態で F9 キーを押し、その結果を確定させる方法です。
RAND は、「適当な数字」が欲しいときの入り口みたいな関数です。
そのまま使うだけでなく、「掛ける」「足す」「切り捨てる」と組み合わせて、
自分の欲しい“範囲・形の乱数”に変形していく感覚をつかめると、一気に面白くなってきます。
