概要
RANDは「0以上1未満」の乱数を返す関数です。再計算のたびに新しい値が生成されるため、シミュレーション、テストデータ作成、ランダム抽選、ランダム並べ替えのキー作成などに使えます。必要に応じてスケーリング(範囲変換)や丸め、固定化(値貼り付け)を組み合わせて運用します。
基本の使い方
書式
=RAND()
引数はありません。返り値は 0.000… 以上 1.000… 未満の実数です。
例
=RAND() // 例: 0.374...
シートのどこかが再計算されるたびに値が変わります(F9、セル編集、依存関係の更新など)。
具体例
任意の範囲にスケーリング(a〜bの一様乱数)
=a + (b - a) * RAND()
例:10〜20の乱数
=10 + (20 - 10) * RAND()
整数のランダム値(a〜bの整数)
=INT(a + (b - a + 1) * RAND())
例:1〜6のサイコロ
=INT(1 + (6 - 1 + 1) * RAND()) // =INT(1 + 6*RAND())
ランダム並べ替えキー(行をシャッフル)
並べ替えのためのキー列に
=RAND()
を入れ、データ範囲をキー列で昇順/降順に並べ替えると行がランダムに並びます。
応用テンプレート
0/1のランダムフラグ(コイン投げのような判定)
=IF(RAND()<0.5, 0, 1)
しきい値(0.5)を変えると出現確率を調整できます。
指定確率で「TRUE/FALSE」を返す
例:30%でTRUE
=RAND()<0.3
ランダム選択(重みなし抽選)
リストから1件を抽出(Microsoft 365)
=INDEX(A2:A101, INT(1 + COUNTA(A2:A101) * RAND()))
正規っぽい乱数(簡易的な中心寄り)
一様乱数2つの平均で中心寄りに(厳密な正規ではない簡易法)
=(RAND()+RAND())/2
よくあるつまずきと対策
値が勝手に変わる
RANDは再計算で変わります。結果を固定したいときは「コピー→値の貼り付け」で静的化します。あるいは「反復計算を止める/計算方法を手動」に切り替える運用も検討します。
端点の扱い
返り値は0以上1未満なので1は出ません。範囲スケーリング時は端点が含まれるように式(+1の扱いなど)を正しく設計してください。
偏りが気になる
RANDは一様分布を想定した乱数です。正規分布など別の分布が必要なら近似式(AVERAGE複数、BOX-MULLERの実装など)や専用関数・ツールの利用を検討します。
重複の問題
整数抽選で重複なくn件取りたい場合は、RANDキーで並べ替えて上位n行を取るのが実務的に簡単です。関数だけでやるなら、UNIQUEと組み合わせる、または動的配列で並べ替えた上でTAKEします(Microsoft 365)。
例題
問題1: 0〜1の乱数をB2に表示してください。
解答例:
=RAND()
問題2: 10〜20の実数乱数をC2に表示してください。
解答例:
=10 + (20 - 10) * RAND()
問題3: 1〜6の整数乱数(サイコロ)をD2に表示してください。
解答例:
=INT(1 + 6 * RAND())
問題4: 30%の確率で「合格」、それ以外は「不合格」をE2に表示してください。
解答例:
=IF(RAND()<0.3, "合格", "不合格")
問題5: A2:A101のリストからランダムに1件をF2に表示してください。
解答例:
=INDEX(A2:A101, INT(1 + COUNTA(A2:A101) * RAND()))
まとめ
RANDは「0以上1未満の一様乱数」を返す基本関数で、スケーリング・丸め・しきい値判定・並べ替えキー作成で応用範囲が広いです。変動を止めたいときは値貼り付けで固定し、範囲変換や整数化の端点処理に注意します。
