Números aleatorios en Java
Tenemos dos formas nativas para generar números aleatorios en Java, Math.random() y java.util.Random.
Math.random()
Es un método público y estático (lo podemos usar sin tener una instancia de la cláse Math), genera un número double aleatorio entre 0 y 1.
double nrand = Math.random() System.out.println( nrand ); // ex: 0.1523523
Si deseamos tener un número entero dentro de un intervalo (entre 1 y 10, incluyendolos), podemos usar la formula Math.random()*(MIN-MAX+1)+MAX+1
// 20 Números enteros aleatorios entre 1 y 10 (incluyendolos) int nrand; for(int i=0;i<20;i++) { nrand = (int)Math.floor( Math.random() *(1-11)+11); System.out.println( nrand ); }
java.util.Random
Random es una clase, la debemos instanciar, además tiene la cualidad de permitir una semilla de generación de números aleatorios (si entregamos la misma semilla, nos va a generar la misma secuencia aleatoria), de todas formas, lo más común es instanciarla sin ningún argumento (ella se encarga de generar una semilla aleatoria).
import java.util.Random; ... Random r = new Random(); // Numero entero aleatorio entre 0 y 10 (no incluyendo al 10) int nrand = r.nextInt(10); // 20 números aleatorios entre 1 y 10 (incluyendolos) int nrand; for(int i=0;i<20;i++) { nrand = r.nextInt(11)+1; System.out.println( nrand ); }
Solo falta decir que Random, posee otros métodos que permite la generación de doubles, float, bytes, boolean, etc aleatorios.
y que pasa si los quiero solo enteros?