知ってる人がたくさんいそうなお話。
Javaで初歩的な乱数と言ったらこれ。
import java.util.Random; Public class Random1(){ public static void main(String[] args) { Random rnd = new Random(); int value = rnd.nextInt(); } }
ご丁寧に書いているけどまあ自己学習なので。
で、これを何回かぶん回してみると...
import java.util.Random; Public class Random1(){ public static void main(String[] args) { Random rnd = new Random(); int value; for(int i=0; i<10; i++){ value = rnd.nextInt(); System.out.println(value); } } }
当然、10個の乱数が出力される。
0 5 6 2 8 8 4 1 8 3
で、1回の実行の間に同じ数字を出力したくないとき、 つまり、重複しない乱数を生成したいとき、 つまり、非反復の乱数を生成したいとき(どれも同じ)
やり方はいろいろあるわけで、例えばこれ↓のように既出の数を除外したり、
これ↓のようにフラグを立てたり、
これ↓とか、
一番マシだと思うのは、配列作って要素番号をシャッフルすればいい。
既出のことなので先人のブログでもみてくだしあ。
Javaなら Collections.shuffle() がある。