いきなり答える備忘録

Google Workspace・Microsoft 365・LibreOfficeなどに関するメモ

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

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

  • メニューの「データ」→「範囲をランダム化」で数列をランダムに並べ替えられます。
  • 関数を使う場合はSORT関数やRANDARRAY関数等を組み合わせる方法があります。

手順

メニューによる方法

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

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

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

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

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

関数による方法

f:id:accs2014:20200620184123p:plain:right:w450

 画像ではB2セルに式を入力することで1から10の整数を重複なくランダムに表示しています。

 入力されている式は次のようなものです。

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

 SEQUENCE関数で1から10までの整数を生成し、それをRANDARRAY関数による10個の乱数(0~1)を基準として並べ替えています。SORT関数の第3引数(昇順降順)は省略しています(TRUEやFALSEを指定しても結果に影響はありません)。

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