Почему std ::iform_int_distribution <IntType>:: operator () не является константой? - PullRequest
7 голосов
/ 02 октября 2019

Насколько я понимаю, распределение не должно меняться при использовании для получения случайного числа. Например, для равномерного распределения его min / max не должны изменяться, поскольку мы используем его для генерации случайных чисел, так почему operator () не является константой?

1 Ответ

7 голосов
/ 02 октября 2019

Хотя min() и max() не изменятся, в распределении может содержаться состояние, помогающее генерировать следующее значение. Если operator() было const, то это состояние не могло бы быть изменено без гарантии того, что объект является потокобезопасным. При условии, что гарантия может быть дорогой, а распределение - легким.

...