Este códigosrand función en C++
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
printf ("First number: %d\n", rand() % 100);
srand (time(NULL));
printf ("Random number: %d\n", rand() % 100);
srand (1);
printf ("Again the first number: %d\n", rand() %100);
return 0;
}
tiene el siguiente resultado:
First number: 41
Random number: 13
Again the first number: 41
También existe la siguiente regla:
dos inicializaciones diferentes con la misma semilla, la instrucción el generador pseudoaleatorio para generar la misma sucesión de resultados para las llamadas subsiguientes a rand en ambos casos.
Entiendo las palabras, pero simplemente no entiendo el método en sí. ¿Por qué volvió 41 otra vez? ¿Es aleatorio o debe devolver el mismo resultado en todos los casos de acuerdo con este código?
Esto hace que la depuración sea más fácil. Si se está ejecutando normalmente, use srant (time (NULL)). Si hay un error en su programa, no llame a srand() o llame a srand (1) y obtendrá la misma secuencia de números de las llamadas a rand(). Tenga en cuenta que cada llamada a rand generará el siguiente número en la secuencia, pero la secuencia siempre será la misma. Nota 2: solo debe llamar a srand() una vez en la aplicación. –
@Martin York: Buen punto. Nunca pensé en esto desde el punto de vista de la depuración. Tiene sentido. – Lazer