Я сомневаюсь, что создание и уничтожение объекта распределения является дорогостоящим, хотя я полагаю, что это может сделать немного больше, чем просто сохранение параметров min,max
. Он может предварительно рассчитать некоторые полезные значения на основе параметров, например, в очевидной реализации 2**32 % (max-min+1)
- это число различных значений из генератора, которые будут отброшены и повторно опробованы.
В принципе, объекту распределения разрешено хранить внутри себя некоторые биты энтропии, которые были извлечены из генератора при предыдущем вызове operator()
, но не нужны. Эти биты могут быть использованы для последующего вызова operator()
. Так что если min==0
и max==1
, то вы можете получить 32 вызова на operator()
в распределении за вызов на генераторе. Вот что такое функция reset()
, чтобы очистить это состояние.
Так что, если вы используете одни и те же минимальные / максимальные значения несколько раз, то технически вы теряете случайные биты, каждый раз используя новый дистрибутив - возможно, вы могли бы получить меньше обращений к движку, чем если бы вы хранили объект распределения вокруг. Но я сомневаюсь, что это важно, тем более что МТ быстр.