En el desarrollo de aplicaciones, suele ser necesario generar números aleatorios. Para hacer esto, a la hora de crear clases en java, Java proporciona las clases java.lang.Math y java.util.Random.
La clase Math, se encuentra en paquete java.lang. Esta clase contiene un método estático Math.random() que genera números aleatorios de tipo double.
Math.random() proporciona un número positivo mayor o igual que 0,0 y menor que 1,0. Excluido este último valor, puede devolver por ejemplo: 0.346342, 0.2344224, 0.98346, etc.
Si se usa Math.random() se puede optar por utilizarlo con o sin parámetros. Los parámetros se utilizan para indicar el intervalo o rango de números dentro del cual se generarán los valores aleatorios.
A continuación se puede ver la sintaxis necesaria para poder usar el método Math.random() en los siguiente ejemplos:
class Main {
public static void main (String argos [] ) {
//Generación de número decimales.
//Math.random()*numeroMaximo+numeroMinimo;
double resultado = Math.random()*30+1;
return resultado;
}
}
class Main {
public static void main (String argos [] ) {
//Generación de número aleatorio entero.
//Math.random()*numeroMaximo+numeroMinimo;
int resultado = Math.random()*30+1;
return resultado;
}
}
La clase Random en el paquete java.util.Random permite generar números aleatorios, pero a diferencia del método Math.random() es necesario instanciarla. Para instanciar se puede emplear un constructor sin parámetros o bien introducir una semilla.
La clase java.util.Random tiene varios métodos como nextInt(), nextFloat(), nextDouble(), nextLong(), etc. nextInt() devuelve un pseudoaleatorio de tipo int con valores entre 0 y 232 producidos con aproximadamente la misma probabilidad, mientras que los métodos nextFloat() y nextDouble() permiten obtener números de coma flotante entre valores de tipo double entre 0,0 y 1,0. En el caso de nextLong, éste devuelve un valor pseudoaleatorio largo, uniformemente distribuido de la secuencia del generador de números aleatorios.
La sintaxis que se debe usar para generar números aleatorios con el método Random() puede verse en los siguiente ejemplos:
import java.util.Random;
public class Programa {
public static void main(String arg[ ]) {
//Generación de número aleatorio e impresión en pantalla con System.out.println.
Random random = new Random();
System.out.println("Número aleatorio entre [0,5[ : "+rnd.nextDouble());
}
}
import java.util.Random
class Main {
public static void main (String argos [] ) {
//Generación de número aleatorio entero llevando a cabo una inicialización de semilla manualmente.
con un número entero cualquiera.
Random random = new Random (seed:600);
int resultado = random.nexInt(bound:70-20)+20;
}
}
import java.util.Random;
class Main
{
// Método para generar un número aleatorio entre 0 y `n`, ambos inclusive
public static int generateRandomNumber(int n)
{
if (n < 0) {
throw new IllegalArgumentException("n must not be negative");
}
// generar un número aleatorio entre 0 y `n`
return new Random().nextInt(n + 1);
}
public static void main(String[] args)
{
// generar números aleatorios entre 0 y 6
int n = 6;
for (int i = 0; i < 10; i++) {
System.out.println(generateRandomNumber(n));
}
}
}