Array

Generando números aleatorios únicos

Businessman working in office

Cuando genera números aleatorios, a menudo es el caso de que cada número de número generado debe ser único. Un buen ejemplo es elegir números de lotería. Cada número elegido al azar de un rango (p. Ej., 1 a 40) debe ser único, de lo contrario, el sorteo de lotería no sería válido.

Usando una colección

La forma más fácil de elegir números aleatorios únicos es colocar el rango de números en una colección llamada ArrayList. Si usted y amp; apos; no se han encontrado con una lista de matriz antes, es una forma de almacenar un conjunto de elementos que no tienen un número fijo. Los elementos son objetos que se pueden agregar o eliminar de la lista. Por ejemplo, let & amp; apos; s hacen el selector de números de lotería. Necesita elegir números únicos de un rango de 1 a 40.

Video destacado

Primero, coloque los números en una Lista de matriz utilizando el método add (). Toma el objeto que se agregará como parámetro:

& lt; pre & gt; import java.util.ArrayList; & lt; br & gt ;
Lotería de clase pública {& lt; br & gt ;
público estático vacío principal (String [] args) {& lt; br & gt ;
// define ArrayList para mantener objetos enteros & lt; br & gt ;
Números de lista de matriz = nueva lista de matriz (); & lt; br & gt ;
para (int i = 0; i & amp; lt; 40; i ++) & lt; br & gt ;
{& lt; br & gt ;
numers.add (i + 1); & lt; br & gt ;
} & lt; br & gt ;
System.out.println (números); & lt; br & gt ;
} & lt; br & gt ;
} & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / pre & gt;

Tenga en cuenta que estamos utilizando la clase de contenedor Integer para el tipo de elemento para que la Lista de matriz contenga objetos y no tipos de datos primitivos.

La salida muestra el rango de números del 1 al 40 en orden:

& lt; pre & gt; [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 2
& lt; / pre & gt ;

Usando la clase de colecciones

Una clase de utilidad llamada Colecciones ofrece diferentes acciones que se pueden realizar en una colección como una Lista de matriz (p. Ej., buscar los elementos, encontrar el elemento máximo o mínimo, invertir el orden de los elementos, etc.). Una de las acciones que puede realizar es barajar los elementos. La confusión moverá aleatoriamente cada elemento a una posición diferente en la lista. Lo hace usando un objeto aleatorio. Esto significa que es una aleatoriedad determinista, pero lo hará en la mayoría de las situaciones.

Para barajar la lista de matriz, agregue la importación de colecciones a la parte superior del programa y luego use el método estático Shuffle. Se necesita que ArrayList se baraje como parámetro:

& lt; pre & gt; import java.util.Collections; & lt; br & gt ;
importar java.util.ArrayList; & lt; br & gt ;
Lotería de clase pública {& lt; br & gt ;
público estático vacío principal (String [] args) {& lt; br & gt ;
// define ArrayList para mantener objetos enteros & lt; br & gt ;
Números de lista de matriz = nueva lista de matriz (); & lt; br & gt ;
para (int i = 0; i & amp; lt; 40; i ++) & lt; br & gt ;
{& lt; br & gt ;
numers.add (i + 1); & lt; br & gt ;
} & lt; br & gt ;
Collections.shuffle (números); & lt; br & gt ;
System.out.println (números); & lt; br & gt ;
} & lt; br & gt ;
}
& lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & gt; & gt; & gt; & gt; & gt; & gt;

Ahora la salida mostrará los elementos en la Lista de matriz en un orden aleatorio:

& lt; pre & gt; [24, 30, 20, 15, 25, 1, 8, 7, 37, 16, 21, 2, 12, 22, 34, 33, 14, 38, 39, 18, 36, 28, 17, 4, 3
& lt; / pre & gt ;

Elegir los números únicos

Para elegir los números aleatorios únicos, simplemente lea los elementos de la Lista de matriz uno por uno utilizando el método get (). Toma la posición del elemento en la Lista de matriz como parámetro. Por ejemplo, si el programa de lotería necesita elegir seis números del rango de 1 a 40:

& lt; pre & gt; import java.util.Collections; & lt; br & gt ;
importar java.util.ArrayList; & lt; br & gt ;
Lotería de clase pública {& lt; br & gt ;
público estático vacío principal (String [] args) {& lt; br & gt ;
// define ArrayList para mantener objetos enteros & lt; br & gt ;
Números de lista de matriz = nueva lista de matriz (); & lt; br & gt ;
para (int i = 0; i & amp; lt; 40; i ++) & lt; br & gt ;
{& lt; br & gt ;
numers.add (i + 1); & lt; br & gt ;
} & lt; br & gt ;
Collections.shuffle (números); & lt; br & gt ;
System.out.print (& amp; quot; Esta semana los números de lotería de & amp; apos; s son: & amp; quot;); & lt; br & gt ;
para (int j = 0; j & amp; lt; 6; j ++) & lt; br & gt ;
{& lt; br & gt ;
System.out.print (numbers.get (j) + & amp; quot; & amp; quot;); & lt; br & gt ;
} & lt; br & gt ;
} & lt; br & gt ;
}
& lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & gt; & gt; & lt; / br & gt; & gt; & gt; & gt;

La salida es:

& lt; pre & gt; Esta semana los números de lotería de & amp; apos; s son: 6 38 7 36 1 18
& lt; / pre & gt ;
& amp; # x203A; Informática

Dejar respuesta

Please enter your comment!
Please enter your name here

FOLLOW US

Related Stories