今回は必要に迫られて、Google spreadSheetで乱数を作成する方法について調べました。
使う関数:
乱数の生成 : RAND関数、RANDBETWEEN関数、RANDARRRAY関数
切り捨てなど: RAUND関数、RANDUP関数、RANDDOWN関数
乱数の作成方法
Google Spreadsheet(以下、Spreatsheet)で乱数を作成する方法するには、
- 関数を使って、乱数を作る
- 作成した乱数を必要な形に変更する
の二つの手順で作成します。
※乱数というのは、適当な数字であることです。ざっくり言えば、規則性や意図されていない数字とのことで良いと思います。まぁ、どのような数字も事後でこじつければ規則性を見出すことは可能でしょうけど・・・
1.乱数を作る
乱数を作るには下記の3つの関数を使います。
RAND() : 0以上1未満でランダムな数字が表示される。()の中には何も入力しない。
RANDBETWEEN(下限, 上限) : 設定した上限、下限で表示される
下限 : 作成する乱数の下限を設定する。整数で入力 or セルの指定をする。
上限 : 作成する乱数の上限を設定する。整数で入力 or セルの指定をする。
RANDARRAY(行数、列数):設定された行数・列数のセルに、0以上1以下のランダムな値が入る
行数:発生させる乱数の行数を設定。つまり、使う横列の数を使いますかってことです。
整数で入力 または セルを指定する。
列数:発生させる乱数の列数を設定。つまり、使う縦列の数を使いますかってことです。
整数で入力 または セルを指定する。
関数は使ってみるのがわかりやすので早速使ってみました。
関数で算出された結果が下記。2行目のところが関数で入力した結果になります。
この3つの関数の注意点が、確定する度に乱数が更新されます。
例えば、
文字を入力してEnterを押すと更新・・・
他の関数を設定してEnterを押すと更新・・・
なので、数値が更新しないようにするため、私は数字のみをコピーして別のところに貼り付けて使いました。(式をコピーしたら意味がないので注意!!)
では、それぞれの乱数を算出する関数について解説します。
RAND()
RAND()で作った乱数は0〜1の範囲の乱数が算出されます。ちなみに「()」の中に数字をいれるとエラーになるため注意。
このままの数値が問題なければ良ければいいのです。
一個作ればオートフィル(セルの右下をドラッグ)で複製可能。
ただ、例えば小数点第一位までの乱数を作りたいとか、二桁目・三桁目だけ乱数で一桁目は0にしたいとかあれば、「2.の乱数の形を整える」を行ってください
RANADBETWEEN(上限, 下限)
上限、下限に入力した範囲の乱数が出てきます。
では上限、下限に小数点を入れたらどうなるか、確認してみたら下記。
対応は難しいようです。整数であればOK。
RANDARRAY(行数、列数)
RANDARRAY()は行数、列数を指定するとその行数/列数のところに乱数が表示されるようです。乱数の範囲は0-1の範囲で、RAND()と同様。ですので、このまま使えるようであれば良いのですが、難しいようであれば「2.乱数の形を整える」を確認して下さい。
RANDARRAY関数は数式を入力したセルを変更すれば行数/列数を一度に変更することが可能です。下記の画面でいうとセルを指定してあるところだけ変更すれば、すべて変更をかけることが可能です。
ただ、RAND()でもオートフィル(セルの右下をドラッグ)が横にも縦にも使えるので、少ない量の乱数を作るようであれば、RAND()で良いかと思います。
多量の乱数を算出するようであれば、RANDARRAYを使用すれば、一つのセルだけ変更することで多くのセルを変更できるので、手間を減らしたり便利。
ただ、私は行数/列数はどちらが縦だっけ〜って、よく忘れます。
余談ですが・・・ 乱数を作った、その分布は?
ここで実験。乱数はどのような頻度で算出されるか確認してみました。
方法はRANDARRAY関数を用いて1000個の乱数を使いヒストグラフを作成してみました。
範囲全体で大きな偏りはなく作成されるようですが、全体が完全に均等になることもないようです。
2.乱数を必要な形式に変換する方法
整数で範囲を指定して算出するのであれば「RANDBETWEEN関数」を用いて算出するのがわかりやすいです。
ですが、小数点第一位までの乱数など、小数点が関わっていくのであれば、一工夫が必要になります。
数字の形式を整えるのに必要な関数
RAND関数だと、小数点が入った数字のみが算出されるので、これをかけ合わせたあとに、使いやすい形に変換していきます。切り捨て、四捨五入などを使って形を整えていく
そこで使うのが下記の関数。
ROUND(値, 桁数) : 指定された値を、設定された桁数で四捨五入を行う
ROUNDUP(値, 桁数) : 指定された値を、設定された桁数で切り上げを行う
ROUNDDOWN(値, 桁数) : 指定された値を、設定された桁数で切り捨てを行う
値 : 変更する値を入力 or セルの指定する。
桁数 : 切り上げをする桁を設定する。整数を入力 or セルの指定する。
上記に値と桁数を入れます。値は四捨五入などを行う数字、セルを指定します。
桁数は四捨五入などを行う桁数を指定します。
言葉よりも、やってみるほうがわかりやすい。
それぞれの関数を 値 = 変更する数字で、桁数を変えてどのような数字が算出されるか、試してみました。四捨五入/切り捨て/切り上げされる桁が変わるのがわかると思います。
ちなみに、桁数を入力しないと「0」を入力したのと同じ事となります。
作成方法
RAND関数を使った方法とRANDBETWEEN関数を使った方法を示します。
RAND()を使った方法
まずはRAND()で算出する方法は
1.RAND関数で乱数を作る
2.10のn乗して必要な桁数にする
3.ROUNDDOWN関数を使って不要な数字を切り捨てる
と、なりますが、書いていてもわかりにくいので、実際に行ってみるのがわかりやすいと思います。
RAND関数を使って100~小数点第一位までの乱数を作成する
ということで使用する数式は「=ROUNDDOWN(RAND()*100, -1)」となります。これをオートフィルで多量に作成すれば、多くの乱数を作成できます。
これを応用してもっと大きな桁まで作るのであれば(10000までとか10000000までとか)、100倍したものをもっと大きくすれば(1,000倍とか100,000とか)いいし、切り捨てる部分を変更すれば、小数点第4位、5位までの乱数も作ることができます。
今回はRounddown関数を使いましたが、正直、round関数でもroundup関数で良いと思います。
RANDBETWEEN関数を使って小数点を含む乱数の作成方法
RANDBETWEEN関数を使った乱数の作成もあります。方法は
1.RANDBETWEEN関数を使って乱数を作成
2.10や100などで割る
という手順になります。前回と同様に作成方法を示します。
RAND関数を使って100~小数点第一位までの乱数を作成する
実際に、関数を使って作成してみます。
あとは、例をみて数字を変えてもらえば良いと思います。
RAND()・RANDBETWEEN()でも作成方法が理解しやすい方法を使えばいいと思います。
RANDARRAY()ではどうだろう?
他の関数と同様にRANDARRAY関数を数式に入れると、行数・列数を指定しても数式を入力したセルのみが数式で計算された数字が入るだけした。
これだと、RAND関数を使用したのと変わらないので、方法はわかりませんが、一工夫、必要のようです。
コメント