A pesar de configurar la semilla de la clase Random con un valor específico, el generador de números aleatorios devuelve constantemente el mismo número. Exploremos qué podría estar causando este problema.
La clase Java Random está diseñada para generar números pseudoaleatorios. De forma predeterminada, utiliza su reloj interno como valor inicial, lo que hace que genere una secuencia de números relativamente predecible. Para personalizar la secuencia, puede establecer explícitamente una semilla usando el método setSeed().
La semilla es un valor numérico utilizado para inicializar el estado interno del generador de números aleatorios. Este estado determina la secuencia de números generados.
En el código proporcionado, está creando una nueva instancia de Random dentro del método random(). Esto significa que cada vez que llamas a random(), se establece una nueva semilla, lo que anula efectivamente el valor de semilla previamente establecido.
Para resolver este problema, debes compartir la instancia de Random con toda la clase. Al crear una única instancia y configurar la semilla una vez cuando se inicializa la clase, se asegura de que se genere la misma secuencia de números de manera consistente.
El siguiente código actualizado resuelve el problema:
public class Numbers { private Random randnum; public Numbers() { randnum = new Random(); randnum.setSeed(123456789); } public int random(int i) { return randnum.nextInt(i); } }
En este código actualizado:
Al realizar estos cambios, ahora obtendrá diferentes números aleatorios al llamar a random() desde diferentes partes de su programa, respetando al mismo tiempo el valor inicial especificado.
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