ArrayList<Integer> lista = new ArrayList<Integer>();
lista.add(159);
lista.add(170);
lista.add(256);
たとえば、これらの 3 つの数字を arraylist で取得し、そのうちの 1 つをランダムに取得したいとします。そんなことがあるものか?
Random クラスを使用してこれを行う 1 つの方法:
ArrayList<Integer> lista = new ArrayList<Integer>();
lista.add(159);
lista.add(170);
lista.add(256);
Random r = new Random();
System.out.println(lista.get(r.nextInt(lista.size())));
またはシャッフルを使用します。
ArrayList<Integer> lista = new ArrayList<Integer>();
lista.add(159);
lista.add(170);
lista.add(256);
Collections.shuffle(lista);
System.out.println(lista.get(0));
を使用して、ランダム インデックスとして使用Random
する を生成できます。int
Random rand = new Random();
Integer randomInt = lista.get(rand.nextInt(lista.size()));
ここでは、とrand.nextInt(lista.size())
の間のランダムなインデックスを生成します。0
size - 1
この乱数ジェネレーターのシーケンスから引き出された、 0 (含む) と指定された値 (含まない)の間の均一に分散された疑似乱数の int 値を返します。
アイデアは、新しいランダム インデックスを生成し、そのランダム インデックスを使用して配列からラドム数を取得することです。
そのために
Math.random()
以上 1.0 未満の正符号の double 値を返します。これにより、次のコードが得られます。
int randomIndex = (int)(Math.random() * lista.size());
System.out.println(lista.get(randomIndex));
ここで生成される乱数は真のランダムではなく、疑似乱数ジェネレーターを使用して生成されることに注意してください。これは、日常的な使用のほとんどに十分です。
興味があれば、ここでPRNGの詳細を読むことができます:)
リスト内の要素数にランダムを使用し、それをインデックスとして使用しました。