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