Implementación correcta:
Nota: el tamaño debe ser mayor que 1, de lo contrario no hay dos
Random rand=new Random();
//[0,arrayList.size()),左闭右开
int randNumber1 =rand.nextInt(arrayList.size());
int randNumber2 =rand.nextInt(arrayList.size()-1);
if(randNumber2 >=randNumber1 ){
randNumber2 =randNumber2 +1;
}
Realización incorrecta:
Random rand=new Random();
//[0,arrayList.size()),左闭右开
int randNumber1 =rand.nextInt(arrayList.size());
int randNumber2 =rand.nextInt(arrayList.size()-1);
if(randNumber2 ==randNumber1 ){
randNumber2 =randNumber2 +1;
}
Explicación: randNumber1 es un número aleatorio, principalmente porque randNumber2 es diferente del primer número.
Suponga que el número 1 se selecciona de [0,4), se puede seleccionar 0,1,2,3 y el
número 2 es [0,3), se puede seleccionar 0,1,2
, solo si el número 1 = 2 y el número 2 = 2. En este momento, el número 2 puede ser igual a 3
¡no es razonable! ! ! No es al azar