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