O gerador de números pseudo-aleatórios fornece a mesma primeira saída, mas se comporta conforme o esperado

Usando a classe aleatória e uma semente do tempo (NULL), a distribuição uniforme sempre fornece a mesma primeira saída, mesmo com compilações diferentes, mas após a primeira saída se comportar como seria de esperar que um gerador de números pseudoaleatórios se comportasse.

É por construção ou estou usando incorretamente?

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;
}

Nas três primeiras vezes que executei este programa, obtive resultados de:

57
134
125
136
112

Antes da segunda tentativa, decidi excluir a linha vazia entreuniform_int_distribution eint main() apenas para ver se a semente foi baseada no tempo de compilação, como você pode ver, isso não importava.

57
84
163
42
146

Apenas executando novamente:

57
73
181
160
46

Então, nas minhas corridas eu continuo recebendo57 primeiro, o que obviamente não é o fim do mundo, se eu quiser resultados diferentes, posso jogar fora o primeiro resultado. Mas coloca em questão se isso é intencional (se sim, por quê?) Ou se estou usando mal o gerador de alguma forma (se sim, como?).

questionAnswers(3)

yourAnswerToTheQuestion