×
Traktatov.net » Язык программирования C++. Пятое издание » Читать онлайн
Страница 712 из 714 Настройки
тип элемента, а вторая применяет заданный бинарный оператор.

>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 u(m, n);

>uniform_real_distribution u(x, y);

Генерирует значения указанного типа в заданном инклюзивном диапазоне. Параметры >m (или >x) задают наименьшее число, которое может быть возвращено; а параметры >n (или >y) — наибольшее. По умолчанию >m имеет значение 0, a >n — максимально возможное значение, которое способен хранить объект типа >intT. Параметр >x по умолчанию имеет значение 0.0, а >y — 1.0.

Распределение Бернулли