C++ named requirements: RandomNumberDistribution (since C++11)
RandomNumberDistribution — это функциональный объект, возвращающий случайные числа в соответствии с функцией плотности вероятности p(x) или дискретным распределением вероятностей P(x i ) .
Требования
Тип
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, lvalue типа, удовлетворяющего UniformRandomBitGenerator -
os, lvalue специализации std::basic_ostream -
is, lvalue специализации 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
|
Наибольшая нижняя граница значений, которые могут быть возвращены
operator()
объекта
x
, определяемая текущими значениями параметров
x
|
Константная |
x.max()
|
T
|
Наименьшая верхняя граница значений, которые могут быть возвращены
operator()
объекта
x
, определяемая текущими значениями параметров
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 ) , либо только на время одного вызова operator(), с использованием d ( g,p ) .
Вызовы константных функций-членов распределения и os << d не влияют на последовательность чисел, генерируемых повторными d ( g ) .
Стандартная библиотека
Следующие компоненты стандартной библиотеки удовлетворяют требованиям RandomNumberDistribution
|
(C++11)
|
генерирует целочисленные значения, равномерно распределенные в заданном диапазоне
(шаблон класса) |
|
(C++11)
|
генерирует вещественные значения, равномерно распределенные в заданном диапазоне
(шаблон класса) |
|
(C++11)
|
генерирует
bool
значения с
распределением Бернулли
(класс) |
|
(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)
|
генерирует вещественные значения, распределенные по определенным подинтервалам
(шаблон класса) |