>iota(beg, end, val)
Присваивает >val
первому элементу и осуществляет приращение >val
. Присваивает приращенное значение следующему элементу и снова осуществляет приращение >val
, а затем присваивает приращенное значение следующему элементу последовательности. Продолжает приращение >val
и присваивает новое значение последующему элементу в исходной последовательности.
A.3. Случайные числа
Библиотека определяет набор классов процессоров случайных чисел и адаптеров, использующих различные математические подходы для генерации псевдослучайных чисел. Библиотека определяет также набор шаблонов распределений, обеспечивающих распределение чисел согласно различным вероятностям. Имена классов процессоров и распределений соответствуют их математическим свойствам.
Подробности генерации чисел этими классами не рассматриваются в данном издании. Здесь перечислены типы процессоров и распределений, но чтобы лучше узнать, как их использовать, следует обратиться к другим ресурсам.
А.3.1. Распределение случайных чисел
За исключением распределения >bernoulli_distribution
, всегда генерирующего логические значения, типы распределений являются шаблонами. Каждый из этих шаблонов получает один параметр типа, задающий тип генерируемого распределением результата.
Классы распределений отличаются от других использованных ранее шаблонов класса, поскольку типы распределения налагают ограничения на пригодные для использования типы. Некоторые шаблоны распределения применяются для генерации только чисел с плавающей запятой; другие применяются для генерации только целых чисел.
В описаниях ниже для указания типа генерируемых шаблоном распределения чисел, например с плавающей запятой, используется формат >имя_шаблона
. Для таких шаблонов вместо >RealT
можно использовать типы >float
, >double
или >long double
. Точно так же вместо >IntT
можно использовать любой из встроенных целочисленных типов (>short
, >int
, >long
, >long long
, >unsigned short
, >unsigned int
, >unsigned long
или >unsigned long long
), но не тип >bool
или >char
.
Шаблоны распределения определяют заданный по умолчанию параметр типа шаблона (см. раздел 17.4.2). Для целочисленных распределений по умолчанию принят тип >int
; для распределений, генерирующих числа с плавающей запятой, — тип >double
.
Конструкторы каждого вида распределения имеют специфические параметры. Некоторые из этих параметров определяют диапазон распределения. В отличие от диапазонов итераторов, эти диапазоны всегда являются инклюзивными (включающими крайние значения).
>uniform_int_distribution
>uniform_real_distribution
Генерирует значения указанного типа в заданном инклюзивном диапазоне. Параметры >m
(или >x
) задают наименьшее число, которое может быть возвращено; а параметры >n
(или >y
) — наибольшее. По умолчанию >m
имеет значение 0, a >n
— максимально возможное значение, которое способен хранить объект типа >intT
. Параметр >x
по умолчанию имеет значение 0.0, а >y
— 1.0.