C++, изменение диапазона распределителей

Скажите, пожалуйста, почему стандартные распределители случайных чисел не позволяют изменить диапазон распределения без пересоздания распределителей? Или же я просто не нашел описания методов, которые позволяют это сделать?

std::uniform_int_distribution<int> distribution{ 0, 100 };
// Далее изменить диапазон уже невозможно?

Как именно устроены распределители? Является ли их пересоздание достаточно быстрой операцией?


Ответы (1 шт):

Автор решения: AR Hovsepyan

стандартные распределители случайных чисел позволяют изменить диапазон распределения. Экземпляры имеют функции_члены, которые просто нужно использовать. Например:

std::uniform_int_distribution<int> distribution{ 0, 100 };
distribution.param(std::uniform_int_distribution<int>::param_type(8, 30));

теперь диапазон изменился.

→ Ссылка