Generando números aleatorios en Java

click fraud protection

Generando una serie de números al azar es una de esas tareas comunes que surgen de vez en cuando. En Java, se puede lograr simplemente usando java.util. Clase aleatoria.

El primer paso, como con el uso de cualquier API clase, es poner la declaración de importación antes del inicio de su clase de programa:

A continuación, cree un objeto aleatorio:

El objeto aleatorio le proporciona un generador de números aleatorios simple. Los métodos del objeto dan la capacidad de elegir números aleatorios. Por ejemplo, los métodos nextInt () y nextLong () devolverán un número que está dentro del rango de valores (negativo y positivo) de los tipos de datos int y long respectivamente:

Los números devueltos serán elegidos aleatoriamente valores int y long:

Selección de números aleatorios de cierto rango

Normalmente, los números aleatorios que se generarán deben ser de un cierto rango (por ejemplo, entre 1 y 40 inclusive). Para este propósito, el método nextInt () también puede aceptar un parámetro int. Denota el límite superior para el rango de números. Sin embargo, el número límite superior no se incluye como uno de los números que se pueden elegir. Puede sonar confuso, pero el método nextInt () funciona desde cero hacia arriba. Por ejemplo:

instagram viewer

solo elegirá un número aleatorio de 0 a 39 inclusive. Para elegir entre un rango que comienza con 1, simplemente agregue 1 al resultado del método nextInt (). Por ejemplo, para elegir un número entre 1 y 40 inclusive, agregue uno al resultado:

Si el rango comienza desde un número mayor que uno, deberá:

  • menos el número inicial del número límite superior y luego agregue uno.
  • agregue el número inicial al resultado del método nextInt ().

Por ejemplo, para elegir un número de 5 a 35 inclusive, el número de límite superior será 35-5 + 1 = 31 y se deben agregar 5 al resultado:

¿Qué tan aleatoria es la clase aleatoria?

Debo señalar que la clase Random genera números aleatorios de manera determinista. El algoritmo que produce la aleatoriedad se basa en un número llamado semilla. Si se conoce el número de semilla, entonces es posible averiguar los números que se producirán a partir del algoritmo. Para probar esto, usaré los números de la fecha en que Neil Armstrong pisé la Luna por primera vez como mi número de semilla (20 de julio de 1969):

No importa quién ejecute este código, la secuencia de números "aleatorios" producidos será:

Por defecto, el número de semilla utilizado por:

es el tiempo actual en milisegundos desde el 1 de enero de 1970. Normalmente esto producirá números suficientemente aleatorios para la mayoría de los propósitos. Sin embargo, tenga en cuenta que dos generadores de números aleatorios creados dentro del mismo milisegundo generarán los mismos números aleatorios.

También tenga cuidado al usar la clase Random para cualquier aplicación que debe tener un generador de números aleatorios seguro (por ejemplo, un programa de juego). Es posible adivinar el número de semilla en función del tiempo que se ejecuta la aplicación. En general, para aplicaciones donde los números aleatorios son absolutamente críticos, es mejor encontrar una alternativa al objeto Aleatorio. Para la mayoría de las aplicaciones donde solo tiene que haber un cierto elemento aleatorio (por ejemplo, dados para un juego de mesa), entonces funciona bien.

instagram story viewer