Namespaces
Variants

C++ named requirements: RandomNumberDistribution (since C++11)

From cppreference.net
C++ named requirements

RandomNumberDistribution — это функциональный объект, возвращающий случайные числа в соответствии с функцией плотности вероятности p(x) или дискретным распределением вероятностей P(x i ) .

Требования

Тип D удовлетворяет требованиям RandomNumberDistribution если

Дано

  • 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

генерирует целочисленные значения, равномерно распределенные в заданном диапазоне
(шаблон класса)
генерирует вещественные значения, равномерно распределенные в заданном диапазоне
(шаблон класса)
генерирует bool значения с распределением Бернулли
(класс)
генерирует целочисленные значения согласно биномиальному распределению
(шаблон класса)
генерирует целочисленные значения согласно отрицательному биномиальному распределению
(шаблон класса)
генерирует целочисленные значения в соответствии с геометрическим распределением
(шаблон класса)
генерирует целочисленные значения согласно распределению Пуассона
(шаблон класса)
генерирует вещественные значения с экспоненциальным распределением
(шаблон класса)
генерирует вещественные значения по гамма-распределению
(шаблон класса)
генерирует вещественные значения по распределению Вейбулла
(шаблон класса)
производит вещественные значения по распределению экстремальных значений
(шаблон класса)
генерирует вещественные значения с стандартным нормальным (гауссовым) распределением
(шаблон класса)
генерирует вещественные значения с логнормальным распределением
(шаблон класса)
генерирует вещественные значения согласно распределению хи-квадрат
(шаблон класса)
генерирует вещественные значения согласно распределению Коши
(шаблон класса)
генерирует вещественные значения по F-распределению Фишера
(шаблон класса)
генерирует вещественные значения согласно t-распределению Стьюдента
(шаблон класса)
генерирует целочисленные значения по дискретному распределению
(шаблон класса)
генерирует вещественные значения, распределенные на постоянных подинтервалах
(шаблон класса)
генерирует вещественные значения, распределенные по определенным подинтервалам
(шаблон класса)