C++ наимённые требования: RandomNumberDistribution (с C++11)
Объект RandomNumberDistribution — это функция-объект, возвращающая случайные числа в соответствии с функцией плотности вероятности p(x) или дискретным распределением вероятностей P(xi).
Требования
Тип D удовлетворяет RandomNumberDistribution, если
-
Dудовлетворяет CopyConstructible -
Dудовлетворяет CopyAssignable
Дано
-
T, тип, указанный вD::result_type -
P, тип, указанный вD::param_type, который - удовлетворяет CopyConstructible
- удовлетворяет CopyAssignable
- удовлетворяет EqualityComparable
- имеет конструктор, принимающий такие же аргументы, как каждый из конструкторов
D, которые принимают аргументы, соответствующие параметрам распределения. - имеет член-функцию с таким же именем, типом и семантикой, как каждая член-функция
D, возвращающая параметр распределения - объявляет член-тип
using distribution_type = D; -
d, значение типаD -
xиy, (возможно, константные) значения типаD -
p, (возможно, константное) значение типаP -
g,g1,g2, ссылки на значения типа, удовлетворяющего UniformRandomBitGenerator -
os, ссылка на специализациюstd::basic_ostream -
is, ссылка на специализациюstd::basic_istream
Следующие выражения должны быть допустимы и иметь указанное влияние
| Выражение | Тип | Примечания | Сложность |
|---|---|---|---|
D::result_type | T | Арифметический тип | Время компиляции |
D::param_type | P | Время компиляции | |
D() | Создаёт распределение, неотличимое от любого другого распределения, созданного по умолчанию, D | Постоянная | |
D(p) | Создаёт распределение, неотличимое от D, построенного непосредственно из значений, использованных для построения p
| Такая же, как у p при построении |
|
d.reset() | void | Сбрасывает внутреннее состояние распределения. Следующий вызов operator() для d не будет зависеть от значений, сгенерированных любым генератором до reset()
| Постоянная |
x.param() | P | Возвращает p так, что D(p).param() == p
| Не хуже, чем D(p) |
d.param(p) | void | Постусловие: d.param() == p
| Не хуже, чем D(p) |
d(g) | T | Последовательность чисел, возвращаемых последовательными вызовами этой функции с тем же g, распределена случайно в соответствии с параметрами распределения, заданными в d.param()
| Амортизированное постоянное число вызовов g |
d(g,p) | T | Последовательность чисел, возвращаемых последовательными вызовами этой функции с тем же g, распределена случайно в соответствии с параметрами распределения, заданными в p
| Амортизированное постоянное число вызовов g |
x.min() | T | Наименьшая нижняя граница значений, которые потенциально могут быть возвращены x’s operator(), определяемая текущими значениями параметров x | Постоянная |
x.max() | T | Наибольшая верхняя граница значений, которые потенциально могут быть возвращены x’s operator(), определяемая текущими значениями параметров x | Постоянная |
x == y | bool | Устанавливает отношение эквивалентности. Возвращает true если x.param() == y.param() и бесконечные будущие последовательности значений, которые были бы сгенерированы повторными вызовами x(g1) и y(g2) были бы равны, при условии, что g1 == g2
| Постоянная |
x != y | bool | !(x == y) | Постоянная |
os << x | Ссылка на тип os
| Записывает текстовое представление параметров распределения и внутреннего состояния в os. Флаги форматирования и символ заполнения os не изменяются | |
is >> d | Ссылка на тип is
| Восстанавливает параметры распределения и внутреннее состояние данными, прочитанными из is. Флаги форматирования is не изменяются. Данные должны быть записаны с помощью потока с тем же регионом, CharT и Traits параметрами шаблона потока, в противном случае поведение неопределено. При возникновении плохих входных данных вызывается is.setstate(std::ios::failbit), который может выбросить std::ios_base::failure. d в этом случае не меняется |
Примечания
Параметры объекта распределения могут быть изменены либо постоянно, используя d.param(p), либо только на время одного вызова оператора(), используя d(g,p).
Вызовы константных член-функций распределения и os << d не влияют на последовательность чисел, производимую повторными вызовами d(g).
Стандартная библиотека
Следующие компоненты стандартной библиотеки удовлетворяют RandomNumberDistribution
|
(C++11) | генерирует целые значения, равномерно распределённые в заданном диапазоне (шаблон класса) |
|
(C++11) | генерирует вещественные значения, равномерно распределённые в заданном диапазоне (шаблон класса) |
|
(C++11) | генерирует значения по распределению Бернулли (класс) |
|
(C++11) | генерирует целые значения по биномиальному распределению (шаблон класса) |
|
(C++11) | генерирует целые значения по отрицательному биномиальному распределению (шаблон класса) |
|
(C++11) | генерирует целые значения по геометрическому распределению (шаблон класса) |
|
(C++11) | генерирует целые значения по распределению Пуассона (шаблон класса) |
|
(C++11) | генерирует вещественные значения по экспоненциальному распределению (шаблон класса) |
|
(C++11) | генерирует вещественные значения по гамма-распределению (шаблон класса) |
|
(C++11) | генерирует вещественные значения по распределению Вейбулла (шаблон класса) |
|
(C++11) | генерирует вещественные значения по распределению экстремальных значений (шаблон класса) |
|
(C++11) | генерирует вещественные значения по стандартному нормальному (гауссовому) распределению (шаблон класса) |
|
(C++11) | генерирует вещественные значения по логарифмически нормальному распределению (шаблон класса) |
|
(C++11) | генерирует вещественные значения по распределению хи-квадрат (шаблон класса) |
|
(C++11) | генерирует вещественные значения по распределению Коши (шаблон класса) |
|
(C++11) | генерирует вещественные значения по F-распределению Фишера (шаблон класса) |
|
(C++11) | генерирует вещественные значения по t-распределению Стьюдента (шаблон класса) |
|
(C++11) | генерирует случайные целые числа по дискретному распределению (шаблон класса) |
|
(C++11) | генерирует вещественные значения, распределённые на постоянных подынтервалах (шаблон класса) |
|
(C++11) | генерирует вещественные значения, распределённые на определённых подынтервалах (шаблон класса) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/named_req/RandomNumberDistribution