Генератор псевдослучайных чисел выдает тот же первый вывод, но затем ведет себя как ожидалось
Используя случайный класс и семя времени (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
Во-первых, что, конечно, не конец света, если я хочу получить другие выходные данные, я могу выбросить первый. Но это ставит под вопрос, является ли это намеренно (если так, почему?) Или я неправильно использую генератор (если да, то как?).