Excel関数 逆引き集 | ランダム値(0〜1)→ RAND

Excel
スポンサーリンク

概要

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未満の一様乱数」を返す基本関数で、スケーリング・丸め・しきい値判定・並べ替えキー作成で応用範囲が広いです。変動を止めたいときは値貼り付けで固定し、範囲変換や整数化の端点処理に注意します。

タイトルとURLをコピーしました