Каждая функция экземпляр из шаблона , описанный в этом разделе [rand.util.canonical] отображает результат одного или несколько призываний в комплекте поставку равномерного случайного генератора бит g одного из членов указанной RealType таким образом, что, если значения , gi полученные g равномерно распределены, результаты Инстанцирования в tj, 0≤tj<1, распределяются как можно более равномерно, как указано ниже.
[ Note: Получение значения таким образом может быть полезным этапом в процессе преобразования значения, сгенерированного генератором однородных случайных битов, в значение, которое может быть доставлено распределением случайных чисел. ] — end note
template<class RealType, size_t bits, class URBG>
RealType generate_canonical(URBG& g);
Effects: Вызывает g() k время для получения значений g0,…,gk−1соответственно. Рассчитывает количество
S=k−1∑i=0(gi−g.min())⋅Ri
используя арифметику типа RealType.
b вводится, чтобы избежать любых попыток произвести больше битов случайности, чем может быть удержано RealType.