"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué obtengo números aleatorios idénticos cuando uso la misma semilla en Java?

¿Por qué obtengo números aleatorios idénticos cuando uso la misma semilla en Java?

Publicado el 2024-11-09
Navegar:577

Why do I get identical random numbers when using the same seed in Java?

Números aleatorios de Java con semilla fija: ¿por qué resultados idénticos?

En su código, ha definido un método para generar números aleatorios usando una semilla específica. Sin embargo, estás notando que cuando proporcionas la misma semilla, los 100 números generados son idénticos.

Este comportamiento es esperado porque el uso de la misma semilla en el constructor aleatorio da como resultado una secuencia predecible de números. Una semilla es un valor inicial que inicializa el generador de números aleatorios. Esta es una característica importante para las pruebas, ya que permite obtener resultados consistentes al volver a ejecutar las pruebas.

Comprensión de la generación de números pseudoaleatorios

Generadores de números pseudoaleatorios (PRNG) como aleatorios en Java generar secuencias cercanas a la verdadera aleatoriedad. Sin embargo, tienen un pequeño conjunto de valores iniciales, incluida la semilla, que determina completamente la secuencia.

Arreglando el código

Para generar diferentes secuencias de números aleatorios, debes evitar usar la misma semilla cada vez. En su lugar, cree una instancia aleatoria fuera de su método e inicialícela sin argumentos. Esta instancia utilizará el método nanoTime para generar un valor inicial único.

Aquí está el código corregido:

private Random generator = new Random();
double randomGenerator() {
    return generator.nextDouble() * 0.5;
}

Con este cambio, obtendrás diferentes secuencias de números aleatorios cada vez que llames al método randomGenerator.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3