Генератор псевдослучайных чисел выдает тот же первый вывод, но затем ведет себя как ожидалось

Используя случайный класс и семя времени (NULL), равномерное распределение всегда дает один и тот же первый выход, даже при разных компиляциях, но после того, как первый выход ведет себя так, как вы ожидаете, будет работать генератор псевдослучайных чисел.

Это по конструкции, или я использую это неправильно?

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

Первые три раза, когда я запускал эту программу, я получаю:

57
134
125
136
112

Перед второй попыткой я решил удалить пустую строку междуuniform_int_distribution а такжеint main() просто посмотреть, было ли семя основано на времени компиляции, как вы можете видеть, это не имело значения.

57
84
163
42
146

Просто снова бегаю:

57
73
181
160
46

Так что на моих пробежках я продолжаю получать57 Во-первых, что, конечно, не конец света, если я хочу получить другие выходные данные, я могу выбросить первый. Но это ставит под вопрос, является ли это намеренно (если так, почему?) Или я неправильно использую генератор (если да, то как?).

Ответы на вопрос(3)

Ваш ответ на вопрос