Rand関数とRank.Eq関数を組み合わせると、重複しないランダムな整数を求めることができます。
ビンゴの番号など作りたい場合に使えるテクニックです。
成果物
サンプルとして、1から50000の値が重複しない整数の並びを作ります。
重複しない乱数の求め方
0以上1未満のランダムな数字を求める
Rand()
Rand()
Rand関数、RandBetween関数の使い方について詳しくはこちら。
RandBetween関数は便利ですが、このようにそこそこの頻度で値が重複します。これではビンゴには使えません。
これに対し、Rand関数ではこのように小数が文字通り桁外れで、まず重複することがありません。
なので、Rand関数を並べてその順位(この場合、A列の中で上から何番目に大きい数字か)をRank.Eq関数で求めれば、
重複しない乱数の並びが得られる、という寸法です。
これを50000行作りたいので、A1とB1をコピーしたあと、A50000に移動して、A列とB列を選択し、
Ctrl+Shift+↑でデータがあるところまで選択して、
貼り付けします。乱数と順位が割り振られました。
このままだと何かするたびに50000×2件の計算をすることになるので、数式タブ→計算方法の設定で手動に設定し、自動で再計算されないようにします。
作った乱数表に重複の削除を実行すると、
重複しない乱数表が作れていることが確認できました。
B列の乱数をRank.Eq関数からただの整数にしたいので、C列に値をコピーし、
A列とB列を削除したら完成です。
作業が完了したら、計算方法を忘れずに自動に戻しておきます。
他の方法
数字をたとえば1から100までオートフィルで並べて、シャッフルさせることでも同様の結果が得られます。
Excel(エクセル):ランダム、乱数
Excelの乱数、ランダム関連操作、関数等まとめです。
乱数の作成
関数で乱数を求める場合、Rand関数(0~1の乱数)またはRandBetween関数(指定範囲の整数)を用います。
もしビンゴで使うような重複...
コメント