Обычное распределение - это просто (x
- случайное равномерное число):
Но я вижу кое-что, что может быть проблематичным:
std::uniform_int_distribution<int> distribution(min, max);
Разве это не дает вашему генератору чисел тип int
?
Чтобы исправить проблему высева, создайте свой двигатель вне лямбды и запустите его при создании.
ГСЧ использует алгоритм, который производит числа, которые кажутся случайными, но имеют очень большой период повторения (основной момент Твистера Мерсенна).Когда вы начнете, вы даете ГСЧ начальное значение, чтобы начать процесс.Каждый раз, когда вы запрашиваете другое число, оно выплевывает очередную итерацию алгоритма.
Когда вы заполняете каждую итерацию:
time(NULL)
, этот код изменяется только каждую секунду, поэтому, когда вы запрашиваетеновое случайное число, оно будет меняться только каждую секунду.