29 Numerics library [numerics]

29.6 Random number generation [rand]

29.6.7 Utilities [rand.util]

29.6.7.2 Function template generate_­canonical [rand.util.canonical]

Каждая функция экземпляр из шаблона , описанный в этом разделе [rand.util.canonical] отображает результат одного или несколько призываний в комплекте поставку равномерного случайного генератора бит g одного из членов указанной RealType таким образом, что, если значения , gi полученные g равномерно распределены, результаты Инстанцирования в tj, 0tj<1, распределяются как можно более равномерно, как указано ниже.

[ Note: Получение значения таким образом может быть полезным этапом в процессе преобразования значения, сгенерированного генератором однородных случайных битов, в значение, которое может быть доставлено распределением случайных чисел. ]end note

template<class RealType, size_t bits, class URBG> RealType generate_canonical(URBG& g);

Complexity: Точно k=max(1,b/log2R) вызовы g, где b273 - меньшее из numeric_­limits<RealType>​::​digits и bits, а R - значение g.max()g.min()+1.

Effects: Вызывает g() k время для получения значений g0,,gk1соответственно. Рассчитывает количество

S=k1i=0(gig.min())Ri

используя арифметику типа RealType.

Returns: S/Rk.

Throws: Что и когда g кидает.

b вводится, чтобы избежать любых попыток произвести больше битов случайности, чем может быть удержано RealType.