Стенли Липпман - Язык программирования C++. Пятое издание

На нашем литературном портале можно бесплатно читать книгу Стенли Липпман - Язык программирования C++. Пятое издание, Стенли Липпман . Жанр: Программирование. Онлайн библиотека дает возможность прочитать весь текст и даже без регистрации и СМС подтверждения на нашем литературном портале fplib.ru.
Стенли Липпман - Язык программирования C++. Пятое издание
Название: Язык программирования C++. Пятое издание
Издательство: -
ISBN: -
Год: -
Дата добавления: 6 март 2020
Количество просмотров: 458
Читать онлайн

Помощь проекту

Язык программирования C++. Пятое издание читать книгу онлайн

Язык программирования C++. Пятое издание - читать бесплатно онлайн , автор Стенли Липпман

adjacent_difference(beg, end, dest)

adjacent_difference(beg, end, dest, binaryOp)

Пишет в dest новую последовательность, каждое значение элемента которой, кроме первого, представляет собой разницу между текущими и предыдущим элементами. Первая версия использует оператор - тип элемента, а вторая применяет заданный бинарный оператор.

iota(beg, end, val)

Присваивает val первому элементу и осуществляет приращение val. Присваивает приращенное значение следующему элементу и снова осуществляет приращение val, а затем присваивает приращенное значение следующему элементу последовательности. Продолжает приращение val и присваивает новое значение последующему элементу в исходной последовательности.

A.3. Случайные числа

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

Подробности генерации чисел этими классами не рассматриваются в данном издании. Здесь перечислены типы процессоров и распределений, но чтобы лучше узнать, как их использовать, следует обратиться к другим ресурсам.

А.3.1. Распределение случайных чисел

За исключением распределения bernoulli_distribution, всегда генерирующего логические значения, типы распределений являются шаблонами. Каждый из этих шаблонов получает один параметр типа, задающий тип генерируемого распределением результата.

Классы распределений отличаются от других использованных ранее шаблонов класса, поскольку типы распределения налагают ограничения на пригодные для использования типы. Некоторые шаблоны распределения применяются для генерации только чисел с плавающей запятой; другие применяются для генерации только целых чисел.

В описаниях ниже для указания типа генерируемых шаблоном распределения чисел, например с плавающей запятой, используется формат имя_шаблона<RealT>. Для таких шаблонов вместо 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<IntT> u(m, n);

uniform_real_distribution<RealT> u(x, y);

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

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

bernoulli_distribution b(p);

Возвращает значение true с вероятностью, заданной параметром p. По умолчанию параметр p имеет значение 0.5.

binomial_distribution<IntT> b(t, p);

Распределение вычисляется для выборочного размера, заданного целочисленным значением t, с вероятностью p; по умолчанию t имеет значение 1, а p — значение 0.5.

geometric_distribution<IntT> g(p);

Параметр p задает вероятность возвращения значения true и по умолчанию имеет значение 0.5.

negative_binomial_distribution<IntT> nb(k, p);

Целочисленное значение k приближается к решению с вероятностью успеха p. По умолчанию k имеет значение 1, а p — значение 0.5.

Распределение Пуассона

poisson_distribution<IntT> p(х);

Распределение относительно значения x типа double.

exponential_distribution<RealT> e(lam);

Лямбда lam — значение с плавающей точкой; по умолчанию lam имеет значение 1.0.

gamma_distribution<RealT> g(a, b);

Альфа (форма) a и бета (масштаб) b; оба по умолчанию имеют значение 1.0.

weibull_distribution<RealT> w(a, b);

Форма a и масштаб b; оба по умолчанию имеют значение 1.0.

extreme_value_distribution<RealT> е(а, b);

По умолчанию а имеет значение 0.0, a b — значение 1.0.

Нормальное распределение или распределение Гаусса

normal_distribution<RealT> n(m, s);

Параметр m — это математическое ожидание, a s — среднеквадратичное отклонение. По умолчанию m имеет значение 0.0, a s — значение 1.0.

lognormal_distribution<RealT> ln(m, s);

Параметр m — это математическое ожидание, a s — среднеквадратичное отклонение. По умолчанию m имеет значение 0.0, a s — значение 1.0.

chi_squared_distribution<RealT> c(x);

Параметр x — это степень свободы; по умолчанию имеет значение 1.0.

cauchy_distribution<RealT> c(a, b);

Область а по умолчанию имеет значение 0.0, а масштаб b — значение 1.0.

fisher_f_distribution<RealT> f(m, n);

m и n — степени свободы; оба по умолчанию имеют значения 1.

student_t_distribution<RealT> s(n);

n — степень свободы; значение по умолчанию — 1.

Выборочное распределение

discrete_distribution<IntT> d(i, j);

discrete_distribution<IntT> d{il};

i и j — итераторы ввода последовательности коэффициентов; il — заключенный в скобки список коэффициентов. Коэффициенты должны допускать приведение к типу double.

piecewise_constant_distribution<RealT> pc(b, е, w);

b, е и w — итераторы ввода.

piecewise_linear_distribution<RealT> pl(b, е, w);

b, е и w — итераторы ввода.

А.3.2. Процессоры случайных чисел

Библиотека определяет три класса, реализующих различные алгоритмы генерации случайных чисел. Библиотека определяет также три адаптера, модифицирующих созданную последовательность заданным процессором. Классы процессоров и адаптеров являются шаблонами. В отличие от параметров распределений, параметры процессоров сложны и требуют хорошего знания математического механизма, используемого конкретным процессором. Процессоры перечислены здесь только для того, чтобы читатель знал об их существовании, но подробно они в этой книге не рассматриваются.

Библиотека определяет также несколько типов, созданных на базе процессоров и адаптеров. Тип default_random_engine — это псевдоним типа для одного из классов процессоров, параметризованных переменными, предназначенными для повышения эффективности использования. Библиотека определяет также несколько классов, являющихся полностью специализированными версиями процессора или адаптера. Ниже приведены процессоры и их специализации, определенные библиотекой.

Тип default_random_engine

Псевдоним типа для одного из процессоров, подходящего для большинства задач.

Тип linear_congruential_engine

minstd_rand0 — имеет множитель 16807, модуль 2147483647 и приращение 0.

minstd_rand — имеет множитель 48271, модуль 2147483647 и приращение 0.

Тип mersenne_twister_engine

mt19937 — 32-разрядный беззнаковый генератор вихря Мерсенна.

mt19937_64 — 64-разрядный беззнаковый генератор вихря Мерсенна.

Тип subtract_with_carry_engine

ranlux24_base — 32-разрядный беззнаковый генератор вычитания с переносом.

ranlux48_base — 64-разрядный беззнаковый генератор вычитания с переносом.

Тип discard_block_engine

Адаптер процессора, отбрасывающий результаты базового процессора. Параметризуется базовым процессором для размера используемого блока и размера использованных блоков.

ranlux24 — использует процессор ranlux24_base с размером блока 223 и размером использованных блоков 23.

ranlux48 — использует процессор ranlux48_base с размером блока 389 и размером использованных блоков 11.

Тип independent_bits_engine

Адаптер процессора, генерирующий числа с заданным количеством битов. Параметризован базовым процессором для использования количества битов, генерируемых в его результатах, и целочисленным беззнаковым типом, используемым для содержания созданных битов. Определяемое количество битов должно быть меньше количества цифр, которое может содержать заданный беззнаковый тип.

Комментариев (0)
×