Spec-Zone.ru › C++

Именованные требования 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, возвращающая параметр распределения
    • объявляет typedef-член 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 Наибольшая нижняя граница значений, которые могут быть возвращены x’s operator(), определяемая текущими значениями параметров x’s Константная
x.max() T Наименьшая верхняя граница значений, которые могут быть возвращены x’s operator(), определяемая текущими значениями параметров x’s Константная
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

uniform_int_distribution
(C++11)
генерирует целочисленные значения, равномерно распределённые в диапазоне
(шаблон класса)
uniform_real_distribution
(C++11)
генерирует вещественные значения, равномерно распределённые в диапазоне
(шаблон класса)
bernoulli_distribution
(C++11)
генерирует значения bool в соответствии с распределением Бернулли
(класс)
binomial_distribution
(C++11)
генерирует целочисленные значения в соответствии с биномиальным распределением
(шаблон класса)
negative_binomial_distribution
(C++11)
генерирует целочисленные значения в соответствии с отрицательным биномиальным распределением
(шаблон класса)
geometric_distribution
(C++11)
генерирует целочисленные значения в соответствии с геометрическим распределением
(шаблон класса)
poisson_distribution
(C++11)
генерирует целочисленные значения в соответствии с распределением Пуассона
(шаблон класса)
exponential_distribution
(C++11)
генерирует вещественные значения в соответствии с экспоненциальным распределением
(шаблон класса)
gamma_distribution
(C++11)
генерирует вещественные значения в соответствии с гамма-распределением
(шаблон класса)
weibull_distribution
(C++11)
генерирует вещественные значения в соответствии с распределением Вейбулла
(шаблон класса)
extreme_value_distribution
(C++11)
генерирует вещественные значения в соответствии с распределением экстремальных значений
(шаблон класса)
normal_distribution
(C++11)
генерирует вещественные значения в соответствии с стандартным нормальным (гауссовым) распределением
(шаблон класса)
lognormal_distribution
(C++11)
генерирует вещественные значения в соответствии с логнормальным распределением
(шаблон класса)
chi_squared_distribution
(C++11)
генерирует вещественные значения в соответствии с распределением хи-квадрат
(шаблон класса)
cauchy_distribution
(C++11)
генерирует вещественные значения в соответствии с распределением Коши
(шаблон класса)
fisher_f_distribution
(C++11)
генерирует вещественные значения в соответствии с F-распределением Фишера
(шаблон класса)
student_t_distribution
(C++11)
генерирует вещественные значения в соответствии с t-распределением Стьюдента
(шаблон класса)
discrete_distribution
(C++11)
генерирует целочисленные значения в соответствии с дискретным распределением
(шаблон класса)
piecewise_constant_distribution
(C++11)
генерирует вещественные значения, распределённые на заданных подынтервалах с постоянной плотностью
(шаблон класса)
piecewise_linear_distribution
(C++11)
генерирует вещественные значения, распределённые на заданных подынтервалах с линейной плотностью
(шаблон класса)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/named_req/RandomNumberDistribution

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API