Números aleatorios (random) en Java

Curso de Java

11.  
22.  

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.

Math.random()

La llamada a este método genera una número aleatorio entre 0.0 (inclusive) y 1.0 (exclusive).

Generar número aleatorio dentro de un rango

Math.floor(Math.random() * (MAX - MIN + 1)) + MIN;

Como ejemplo, si deseamos generar un número aleatorio entre 25 y 75, la sentencia sería

Math.floor(Math.random() * (75-25+1)) + 25;

Ejercicios números aleatorios

1. Obtener un número aleatorio entre 5 y 7.

2. Obtener una letra aleatoria de tu nombre.

Tendrás que usar los siguientes códigos:

Math.floor(Math.random() * (MAX - MIN + 1)) + MIN;
nombre.charAt(int posicion);
nombre.length();

Pasos para resolver el ejercicio:

  1. Calculamos un número aleatorio en un rango comprendido entre 0 y el número de letras de tu nombre.
  2. Utilizamos ese número aleatorio para obtener la letra de tu nombre que ocupa esa posición.
  3. Mostramos la letra en la consola.

java.util.Random

Para poder usar esta clase, al contrario que en el ejemplo anterior, debemos instanciarla.

Podemos usar un constructor sin parámetros o bien pasarle una semilla. Si instanciamos varias veces la clase con la misma semilla, tendremos siempre la misma secuencia de números aleatorios.

Random r1 = new Random();
Random r2 = new Random(47);
Random r3 = new Random(47); // r2 y r3 darán la misma secuencia.
  
int n1 = r1.nextInt();
int n2 = r2.nextInt(10); // número aleatorio entre 0 y 9 (el 10 es exclusive)
int n3 = r3.nextInt(10); // obtendremos el mismo número aleatorio que n2, ya que ambos usan la misma semilla
  
System.out.println("n1: " + n1);
System.out.println("n2: " + n2);
System.out.println("n3: " + n3);

Una manera de obtener una semilla que sea distinta de cada vez puede ser obtener el tiempo actual en milisegundos con System.currentTimeMillis().

Ver preguntas

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.