Rellenar un array de números aleatorios sin repetir en Java

Hola a todos, hoy os voy a explicar como podemos rellenar un array de números aleatorios sin repetir en Java.

Es posible que cuando generamos un array de números aleatorios en Java, necesitemos que esos números no se repitan, por ejemplo, un boleto de lotería.

Preparando todo para generar números aleatorios sin repetir

Para generar un array de números aleatorios necesitaremos pedir al usuario, lo siguiente:

  • Longitud del array.
  • Minimo valor.
  • Maximo valor.

También necesitamos generar un número aleatorio, lo tenemos en este tutorial:

Como generar números aleatorios con el método Math.random de Java

Validaciones

Con todo lo necesario ya podemos empezar, debemos tener algunas cosas en cuenta con los valores dados:

  • La longitud debe ser mayor de 0.
  • Si el numero mínimo es mayor que el máximo, lo intercambiaremos para evitar problemas.
  • La diferencia entre el mínimo y máximo debe ser mayor a la longitud.

Si todo esta correcto, podemos empezar con el algoritmo.

Algoritmo para generar números aleatorios sin repetir

Crearemos un array con la longitud dada y lo rellenamos con un valor que no este entre mínimo y el máximo, puede ser el valor menor menos 1 o el valor máximo mas 1.

Después, recorreremos el array validando por cada posición si ya esta en el array, por lo que si esta repetido, volveremos a generar un nuevo numero. Solo cuando el número lo insertemos continuaremos rellenando nuestro array.

Ejecutando nuestro programa

Con todo listo, podemos ya probar nuestro programa.

Probaremos los siguientes valores:

  • Longitud: 10
  • Valor minimo: 0
  • Valor máximo: 20

array de números aleatorios sin repetir java 1

Podemos probar ver qué pasa si ponemos la longitud incorrecta.

array de números aleatorios sin repetir java 2

Otro caso puede ser que no podamos rellenar el array:

  • Longitud: 10
  • Valor minimo: 0
  • Valor maximo: 5

array de números aleatorios sin repetir java 3

Función para generar números aleatorios sin repetir

Todo esto que hemos hecho, seria interesante poder ejecutarlo cuando lo necesitemos con una función.

Recuerda que tenemos un video haciendo esto mismo paso a paso:

Este código también esta en nuestra biblioteca de Java.

https://github.com/DiscoDurodeRoer/Biblioteca-DDR-Java

Espero que os sea de ayuda, si tenéis dudas, preguntad. Estamos para ayudarte.

Compartir

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


Warning: Trying to access array offset on value of type null in /home2/discodur/public_html/discoduroderoer/wp-content/themes/disto/single.php on line 539