El generador de números pseudoaleatorios da la misma primera salida pero luego se comporta como se esperaba
Usando la clase aleatoria y una semilla de tiempo (NULL), la distribución uniforme siempre da la misma primera salida, incluso con diferentes compilaciones, pero después de que la primera salida se comporte como cabría esperar que se comportara un generador de números pseudoaleatorio.
¿Esto es por construcción, o lo estoy usando incorrectamente?
MWE:
#include <ctime>
#include <iostream>
#include <random>
using namespace std;
default_random_engine gen(time(NULL));
uniform_int_distribution<int> dist(10,200);
int main()
{
for(int i = 0; i < 5; i++)
cout<<dist(gen)<<endl;
return 0;
}
Las primeras tres veces que ejecuté este programa obtengo resultados de:
57
134
125
136
112
Antes del segundo intento, decidí eliminar la línea vacía entreuniform_int_distribution
yint main()
solo para ver si la semilla se basó en el tiempo de compilación, como puede ver, eso no importó.
57
84
163
42
146
Solo corriendo de nuevo:
57
73
181
160
46
Así que en mis carreras sigo obteniendo57
primero, que por supuesto no es el fin del mundo, si quiero diferentes salidas puedo tirar la primera salida. Pero pone en tela de juicio si esto es así por diseño (si es así, ¿por qué?) O si estoy usando mal el generador de alguna manera (si es así, ¿cómo?).