私の Android アプリでは、指定された範囲から 2 つのランダムな整数を選択する必要があります。以下のコードは機能しますが、実際にはランダムな整数を選択するのではなく、整数をシャッフルしています。そして、私を悩ませているのはrandomNum2= (int)it.next();
、コード内のビットのために、最大 int を実際の最大値よりも 1 小さい値として指定する必要があることです。正しい数値 (現在は 127) を最大値java.util.NoSuchElementException
として設定すると、次の反復として 128 を探しているため、エラーが発生します。使用する前にrand = new Random();
randomNum1 = rand.nextInt(max - min + 1) + min;
randomNum2 = rand.nextInt(max - min + 1) + min;
しかし、2 つのランダムな int が同じになる可能性があるという問題があり、それらが一意である必要があります。最小/最大整数範囲から2つの乱数を取得するためのより良い方法を誰かが提案できますか? これが私のコードです:
int min = 1;
int max = 126;
int randomNum1;
int randomNum2;
List<Integer> choicesL;
public void randomTwo() {
choicesL = new LinkedList<Integer>();
for (int i = min; i <= max; i++) {
choicesL.add(i);
}
Collections.shuffle(choicesL);
Iterator<Integer> it = choicesL.iterator();
while (it.hasNext())
{
randomNum1= (int)it.next();
randomNum2= (int)it.next();
}
}