(Gスプレッドシート)重複しないランダムな整数を生成する

 Googleスプレッドシートで重複しない整数をランダムに並べる方法についてです。

  • メニューの「データ」→「範囲をランダム化」で数列をランダムに並べ替えられます。
  • 関数を使う場合はSEQUENCE関数とRANDBETWEEN関数を使う方法があります。

手順

メニューによる方法

f:id:accs2014:20200124033836p:plain:right:w600

 1から10の整数をランダムに並べるものとします。
 まず適当な範囲に1から10の数値を並べ、それらを選択した状態でメニューから「データ」→「範囲をランダム化」と選択します。

 

f:id:accs2014:20200124033013p:plain:right:w400

 するとランダムに並べ替えられた結果が得られます。

 なおこのメニューは「行をランダムに並べ替える」ものですので、横1列に並んだ数字を並べ替えることはできません(メニューが選べない)。

関数による方法

f:id:accs2014:20200124033018p:plain:right:w500

 1から10の整数をランダムに並べるものとします。
 適当なセルに次のように記します。

=SORT(SEQUENCE(10),RANDARRAY(10),2)

 1~10の整数10個と0~1のランダムな数値10個を対応付け、後者の昇順で並べ替えて前者だけ表示させるという式です。
 

f:id:accs2014:20200124033021p:plain:right:w350

 結果はこうなります。
 この結果は再計算とともに変化します。

 一般にRAND関数とRANK関数による方法がメジャーですが、重複する整数が生じる可能性が排除できないように思われます(見たことはありませんが)。しかしこの方法なら重複が生じないことは明らかです。