Números aleatorios de Java usando una semilla

Resuelto Rahul Bhatia asked hace 12 años • 7 respuestas

Este es mi código para generar números aleatorios usando una semilla como argumento:

double randomGenerator(long seed) {
    Random generator = new Random(seed);
    double num = generator.nextDouble() * (0.5);

    return num;
}

Cada vez que doy una semilla e intento generar 100 números, todos son iguales.
¿Cómo puedo arreglar esto?

Rahul Bhatia avatar Sep 17 '12 18:09 Rahul Bhatia
Aceptado

Si estás dando la misma semilla, eso es normal. Esa es una característica importante que permite realizar pruebas.

Marque esto para comprender la generación pseudoaleatoria y las semillas:

Generador de números pseudoaleatorios

Un generador de números pseudoaleatorios (PRNG), también conocido como generador determinista de bits aleatorios DRBG, es un algoritmo para generar una secuencia de números que se aproxima a las propiedades de los números aleatorios. La secuencia no es verdaderamente aleatoria en el sentido de que está completamente determinada por un conjunto relativamente pequeño de valores iniciales, llamado estado del PRNG, que incluye una semilla verdaderamente aleatoria.

Si desea tener secuencias diferentes (el caso habitual cuando no se ajusta o depura el algoritmo), debe llamar al constructor de argumento cero que utiliza nanoTime para intentar obtener una semilla diferente cada vez. Por supuesto, esta Randominstancia debe mantenerse fuera de su método.

Su código probablemente debería ser así:

private Random generator = new Random();
double randomGenerator() {
    return generator.nextDouble()*0.5;
}
Denys Séguret avatar Sep 17 '2012 11:09 Denys Séguret

La forma más sencilla es utilizar:

Random rand = new Random(System.currentTimeMillis());

Esta es la mejor manera de generar Randomnúmeros.

Pollar avatar Mar 29 '2016 09:03 Pollar