Cargo actual:Index > Cómo generar números aleatorios sin repetición en Java

Cómo generar números aleatorios sin repetición en Java

Actualizado:05-01Fuente: consolidación de la red
Advertisement

Cómo generar números aleatorios sin repetición en Java


El lenguaje Java proporciona utilidades para la generación de números aleatorios dentro de sus programas. Si desea generar una serie de números al azar, pero no quiere que ninguno de ellos se repetirán, es necesario utilizar pruebas condicionales y bucles. Mediante la adición de cada número se genera a un objeto de colección conjunto, se puede decir de inmediato si alguno de ellos están duplicados. Si el número es un duplicado, puede indicar a Java para seguir generando nuevos números hasta que encuentra uno que ya no haya agregado al conjunto. El proceso consiste en dos lazos y una sentencia condicional.

Instrucciones

Importe las utilidades de Java necesarios para su generación de números aleatorios y objeto establecer. Agregue el código siguiente en la parte superior de la declaración de la clase:
importar java.util. *;

Cree un objeto de establecer para almacenar los números que generan:
TreeSet MyNumbers = new TreeSet ();

Crear una instancia de la clase al azar para generar sus números al azar:
RandGen Random = new Random ();

Crear un bucle para generar números aleatorios. El siguiente bucle se ejecutará 20 veces:
for (int i = 0; i <20; i ++) {
// Generación de números aquí
}

Dentro de este bucle, puede agregar el procesamiento para generar y ver sus números al azar para los duplicados. Modifique el número 20 para reflejar el número total de valores aleatorios usted quiere que su programa para generar. Dentro del bucle, generar un entero aleatorio:
int randNum = randGen.nextInt ();

Esto ejecutará cada vez que se repite en bucle.

Añadir un segundo bucle para hacer frente a números duplicados. Agregue el código siguiente dentro de su primer bucle después de la línea de generación de números:
para (;;) {
// Trato con los duplicados
}

Este es un bucle infinito, por lo que se ejecutará sin fin hasta que el código rompe explícitamente fuera de él. Dentro de este bucle, puede instruir a Java para seguir generando números aleatorios hasta que se genera una que no lo ha utilizado.

Añadir una prueba condicional en cada número aleatorio. Inserte el siguiente código dentro de su bucle infinito:
si (myNumbers.add (randNum)) romper;
otra cosa randNum = randGen.nextInt ();

Cuando intenta agregar un elemento a un conjunto, el método devuelve verdadero o falso. Si el elemento no está ya en el conjunto, devuelve true, en cuyo caso el código puede salir del bucle. Si el elemento ya está en el conjunto, el método devuelve false, en cuyo caso se puede instruir a Java para elegir otro número aleatorio. El bucle luego ejecutar nuevamente, probando el nuevo valor para ver si es un duplicado. Este proceso continúa hasta que se encuentre un nuevo valor.

Pon a prueba tu código. Agregue la siguiente línea después de su bucle infinito, pero todavía dentro del bucle externo:
System.out.println (randNum);

Esto le permitirá ver a simple vista que sus números son todos únicos. Guarde el archivo, compilar y ejecutar su programa para probarlo. Navegar a través de la salida para comprobar que sus funciones están trabajando.

Consejos y advertencias

Puede generar números aleatorios dentro de un cierto rango pasando un parámetro al método "nextInt".

Si va a generar números dentro de un cierto rango, asegúrese de que su bucle no está configurado para ejecutar más veces que los valores posibles dentro de ese rango.