「ランダムに抽選したいのに、毎回同じ人を手作業で選んでいる…」そんな経験はありませんか?
手作業だと公平性の説明もむずかしいですよね。
GoogleスプレッドシートのRAND関数を使えば、乱数をかんたんに生成できます。抽選やシャッフルも数式ひとつで実現できますよ。
この記事では、RAND関数の基本から乱数の固定方法、実務での活用パターンまで解説します。
RAND関数とは?スプレッドシートで乱数を生成する関数
RAND関数は、0以上1未満のランダムな小数を返す関数です。読み方は「ランド関数」。「Random(ランダム)」が語源です。
入力するたびに異なる値が出るので、抽選やデータのシャッフルに使えます。
戻り値は「0以上1未満」の小数
RAND関数が返す値の範囲は 0 ≤ 値 < 1 です。
たとえば 0.2847... や 0.9163... のような小数が返ります。0ちょうどが出ることはありますが、1は出ません。
この小数をもとに、整数への変換やランダム抽出に応用できます。
引数なしで使える
RAND関数の構文はとてもシンプルです。
=RAND()
引数(カッコの中に入れる値)は不要です。カッコの中は空のまま入力してください。
セルに =RAND() と入力してEnterを押すだけで乱数が表示されます。
RAND関数の基本的な使い方
RAND関数の基本操作を確認しましょう。
セルに入力するだけで乱数が生成される
使い方は3ステップです。
- 任意のセルをクリックする
=RAND()と入力する- Enterキーを押す
これだけで、0〜1未満の乱数がセルに表示されます。複数のセルに入力すれば、それぞれ独立した乱数になりますよ。
計算のたびに値が変わる(揮発性関数)
RAND関数には重要な特徴があります。スプレッドシートが再計算されるたびに値が変わるという点です。
このような関数を揮発性関数と呼びます。再計算のタイミングは次のとおりです。
- どこかのセルを編集したとき
- シートを開いたとき
- F5キーで手動再計算したとき
つまり、何か操作するたびに乱数が変わります。便利な反面、値を保持したい場面では注意が必要です。
揮発性関数の注意点と乱数の固定方法
RAND関数は便利ですが、揮発性ゆえの落とし穴があります。
なぜ再計算されるの?原因と被害事例
通常の関数は、参照先のセルが変わったときだけ再計算されます。しかし揮発性関数は、シート上のどこかが変更されるだけで再計算が走ります。
これが問題になる具体的な場面を紹介します。
- 抽選結果が消える: RAND関数で当選者を決めた後、別のセルを編集したら結果が変わってしまった
- 並び順が崩れる: シャッフル結果を確認中に、うっかり操作して順番が変わった
- 再現性がない: 同じ乱数を再度出すことができない
「さっきの結果をもう一度見たい」と思っても、手遅れです。固定していなければ元の値は取り戻せません。
値貼り付けで固定する方法
乱数を固定するには、数式を値に変換します。手順は次のとおりです。
- RAND関数が入ったセル範囲を選択する
Ctrl + C(MacはCmd + C)でコピーする- そのまま
Ctrl + Shift + V(MacはCmd + Shift + V)で値のみ貼り付け
これで数式が消えて、数値として確定されます。再計算しても値は変わりません。
コピー: Ctrl + C
値貼り付け: Ctrl + Shift + V
抽選やシャッフルの結果を確定させたいときは、結果が出たらすぐに値貼り付けを習慣にしましょう。
実務で使えるRAND活用パターン
RAND関数は、他の関数と組み合わせることで活用の幅が広がります。よく使うパターンを紹介します。
0〜100の整数に変換する(INT・ROUND組み合わせ)
RAND関数の小数を整数に変換するには、INT関数を組み合わせます。
=INT(RAND()*101)
RAND()*101 で0以上101未満の小数を作り、INT関数で小数点以下を切り捨てます。結果は0〜100の整数です。
サイコロ(1〜6)を再現したい場合はこちらです。
=INT(RAND()*6)+1
INT(RAND()*6) で0〜5の整数を作り、+1で1〜6にシフトしています。
ROUND関数を使う方法もあります。ただしROUNDは四捨五入のため、端の値(0と100)の出現確率が他より低くなります。均等な分布が必要ならINT関数を使いましょう。
任意の範囲の乱数に変換する公式
「10〜50の整数をランダムに出したい」など、範囲を指定したい場合の公式です。
=INT(RAND()*(上限-下限+1))+下限
たとえば10〜50の整数なら、次のように書きます。
=INT(RAND()*41)+10
| やりたいこと | 数式 | 結果の範囲 |
|---|---|---|
| 1〜6の整数 | =INT(RAND()*6)+1 | 1, 2, 3, 4, 5, 6 |
| 0〜100の整数 | =INT(RAND()*101) | 0〜100 |
| 10〜50の整数 | =INT(RAND()*41)+10 | 10〜50 |
| 1〜100の整数 | =INT(RAND()*100)+1 | 1〜100 |
公式を覚えなくても、この表を見れば応用できますよ。
ランダム抽出・シャッフルへの応用(SORT+RAND)
実務で特に便利なのが、リストのシャッフルです。SORT関数とRAND関数を組み合わせます。
A1:A10に名前リストが入っている場合の数式です。
=SORT(A1:A10, ARRAYFORMULA(RAND()), TRUE)
ちょっとむずかしく見えますが、やっていることはシンプルです。
ARRAYFORMULA(RAND()): 各行にランダムな数値を割り当てるSORT(...): そのランダム数値で並び替える
結果として、名前リストがランダムな順番で表示されます。発表順の決定や座席のシャッフルに使えますよ。
上位N件だけ抽出したい場合は、SORT結果の先頭N行を使います。たとえば10人から3人を抽選するなら、シャッフル結果の上位3名を採用するだけです。
RANDBETWEENとの違いと使い分け
RAND関数と似た関数にRANDBETWEEN関数があります。違いを整理しておきましょう。
RANDBETWEENは整数に特化
| 比較項目 | RAND() | RANDBETWEEN(下限, 上限) |
|---|---|---|
| 引数 | なし | 下限・上限の2つ |
| 戻り値 | 0以上1未満の小数 | 指定範囲の整数 |
| 揮発性 | あり | あり |
| 典型的な用途 | 確率計算・シャッフル | サイコロ・くじ引き |
RANDBETWEEN関数は =RANDBETWEEN(1,6) のように書きます。引数で範囲を直接指定できるので、整数の乱数が欲しいときは直感的です。
どちらを選ぶべきか
迷ったときは、次の基準で選んでみてください。
- RANDBETWEEN: 整数の乱数がほしい。範囲が決まっている。シンプルに使いたい
- RAND: 小数の乱数がほしい。確率の計算に使いたい。他の関数と組み合わせて加工したい
「1〜6の整数」のような単純なケースはRANDBETWEENが手軽です。一方、シャッフルや確率シミュレーションにはRAND関数が向いています。
よくあるエラーと対処法
RAND関数はシンプルですが、つまずきやすいポイントもあります。
カッコ内に引数を入れてしまった
=RAND(10) のように引数を入れるとエラーになります。RAND関数は引数不要です。=RAND() とカッコ内を空にしてください。
乱数が勝手に変わる
これはエラーではなく揮発性関数の正常な動作です。値を固定したい場合は Ctrl + Shift + V の値貼り付けで対処しましょう。
同じ乱数を複数セルで使いたい
RAND関数はセルごとに独立した乱数を返します。同じ値を使いたい場合は、1つのセルにRAND関数を入力します。他のセルからは絶対参照(=$A$1)で参照してください。
RAND関数が大量にあると動作が重い
揮発性関数を大量に使うと再計算の負荷が増えます。結果が確定したら値貼り付けで数式を消すか、RAND関数の数を最小限にしましょう。
まとめ
RAND関数は、0以上1未満の乱数を返すシンプルな関数です。
この記事で紹介した活用パターンをおさらいします。
- 基本:
=RAND()で0〜1未満の乱数を生成 - 整数に変換:
=INT(RAND()*6)+1でサイコロを再現 - 任意範囲:
=INT(RAND()*(上限-下限+1))+下限の公式 - シャッフル:
=SORT(A1:A10, ARRAYFORMULA(RAND()), TRUE) - 固定方法:
Ctrl + Shift + Vで値のみ貼り付け
揮発性関数なので、結果が出たらすぐに値貼り付けで固定するのがポイントです。
まずは =RAND() をセルに入力して、乱数が生成される様子を確認してみてください。
