У меня есть куча вопросов о случайных двигателях и распределениях, их стоимости и взаимодействия: < /p>
std :: random_device < /code> дорогой (тяжелый конструктивный) объект? Должен ли я создать его только для своего приложения, если это возможно? Мне кажется, что, например, Uniform_int_distribution должен быть очень легким объектом, содержащим диапазон распределения [min, max] и может быть (?) Некоторое внутреннее состояние.
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution distr(1, 10);
auto random_value = distr(gen);
< /code>
Что происходит в последней строке? Распределение Получите следующее значение от случайного двигателя, а затем приводит его в желаемый диапазон [0, 10]
? Всегда очевидно, что внутренние состояния некоторых объектов должны быть изменены после вызова: определенно random_device , random_engine , но есть ли у uniform_int_distribution также какое -то внутреннее состояние?
У меня есть куча вопросов о случайных двигателях и распределениях, их стоимости и взаимодействия: < /p> [list] [*] std :: random_device < /code> дорогой (тяжелый конструктивный) объект? Должен ли я создать его только для своего приложения, если это возможно? Мне кажется, что, например, Uniform_int_distribution должен быть очень легким объектом, содержащим диапазон распределения [min, max] и может быть (?) Некоторое внутреннее состояние.[code]std::random_device rd; std::mt19937 gen(rd()); std::uniform_int_distribution distr(1, 10);
auto random_value = distr(gen); < /code> Что происходит в последней строке? Распределение Получите следующее значение от случайного двигателя, а затем приводит его в желаемый диапазон [0, 10] [/code]? Всегда очевидно, что внутренние состояния некоторых объектов должны быть изменены после вызова: определенно random_device , random_engine , но есть ли у uniform_int_distribution также какое -то внутреннее состояние?