"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é mis números aleatorios son los mismos dentro de las iteraciones del bucle?

¿Por qué mis números aleatorios son los mismos dentro de las iteraciones del bucle?

Publicado el 2024-11-12
Navegar:263

Why are My Random Numbers the Same Within Loop Iterations?

Los mismos números aleatorios dentro de las iteraciones del bucle

En su bucle que se ejecuta 15 veces, ha invocado dh.setDoors() en cada iteración. Dentro de esta función, se llama a srand(time(0)) para iniciar la generación de números pseudoaleatorios. Sin embargo, las llamadas posteriores a rand() dentro del bucle dan como resultado valores constantes de carSetter y decider a lo largo de las 15 iteraciones.

Este comportamiento se produce porque srand(time(0)) establece la semilla para el generador de números aleatorios según en la hora actual. Dado que el bucle se ejecuta rápidamente, time(0) devuelve el mismo valor cada vez, lo que da como resultado la misma secuencia de números pseudoaleatorios.

Para solucionar este problema, se recomienda llamar únicamente a srand(time(0) )) una vez al inicio del programa, normalmente siguiendo un proceso como:

srand(time(0));

for (int i = 0; i 

Al realizar esta inicialización solo una vez, el generador de números pseudoaleatorios generará una secuencia única de números para cada iteración del ciclo, lo que producirá la variación esperada en los valores de carSetter y decider.

Ú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