Este es el método más simple para generar valores aleatorios únicos en un rango o de una matriz .
En este ejemplo, usaré una matriz predefinida, pero también puede adaptar este método para generar números aleatorios. Primero, crearemos una matriz de muestra para recuperar nuestros datos.
- Genere un número aleatorio y agréguelo a la nueva matriz.
- Genere otro número aleatorio y verifique si ya está almacenado en la nueva matriz.
- Si no, agréguelo y continúe
- más reiterar el paso.
ArrayList<Integer> sampleList = new ArrayList<>();
sampleList.add(1);
sampleList.add(2);
sampleList.add(3);
sampleList.add(4);
sampleList.add(5);
sampleList.add(6);
sampleList.add(7);
sampleList.add(8);
A partir de ahora sampleList
, produciremos cinco números aleatorios que son únicos.
int n;
randomList = new ArrayList<>();
for(int i=0;i<5;i++){
Random random = new Random();
n=random.nextInt(8);
if(!randomList.contains(sampleList.get(n)))
randomList.add(sampleList.get(n));
else
i--;
}
Esto es conceptualmente muy simple. Si el valor aleatorio generado ya existe, reiteraremos el paso. Esto continuará hasta que todos los valores generados sean únicos.
Si encuentra útil esta respuesta, puede votarla, ya que es mucho más simple en concepto en comparación con las otras respuestas .
1..100
(existen algoritmos famosos para eso), pero deténgase después de haber determinado los primerosn
elementos.