RandomNumberDistribution
C++ concepts: RandomNumberDistribution
A RandomNumberDistribution
is a function object returning random numbers according to a probability density function p(x) or a discrete probability distribution P(x
i).
Requirements
The type D
satisfies RandomNumberDistribution
if.
D
satisfiesCopyConstructible
Given.
T
, the type named byD::result_type
The following expressions must be valid and have their specified effects.
Expression | Type | Notes | Complexity |
---|---|---|---|
D::result_type | T | An arithmetic type | compile-time |
D::param_type | P | | compile-time |
D() | | creates a distribution indistinguishable from any other default-constructed D | constant |
D(p) | | creates a distribution indistinguishable from D constructed directly from the values used to construct p | Same as p's construction |
d.reset() | void | Resets the internal state of the distribution. The next call to operator() on d will not depend on values produced by any engine prior to reset(). | constant |
x.param() | P | Returns p such that D(p).param() == p | No worse than D(p) |
d.param(p) | void | Postcondition: d.param() == p | No worse than D(p) |
d(g) | T | The sequence of numbers returned by successive invocations of this call with the same g are randomly distributed according to the distribution parametrized by d.param() | Amortized constant number of invocations of g |
d(g,p) | T | The sequence of numbers returned by successive invocations of this call with the same g are randomly distributed according to the distribution parametrized by p | Amortized constant number of invocations of g |
x.min() | T | the greatest lower bound on the values potentially returned by x’s operator(), as determined by the current values of x’s parameters | constant |
x.max() | T | the least upper bound on the values potentially returned by x’s operator(), as determined by the current values of x’s parameters | constant |
x == y | bool | Establishes an equivalence relation. Returns true if x.param() == y.param() and future infinite sequences of values that would be generated by repeated invocations of x(g1) and y(g2) would be equal as long as g1 == g2. | constant |
x != y | bool | !(x == y) | constant |
os << x | Reference to the type of os | Writes a textual representation of the distribution parameters and internal state to os. The formatting flags and fill character of os are unchanged. | |
is >> d | Reference to the type of is | Restores the distribution parameters and internal state with data read from is. The formatting flags of is are unchanged. The data must have been written using a stream with the same locale, CharT and Traits stream template parameters, otherwise the behavior is undefined. If bad input is encountered, is.setstate(std::ios::failbit) is called, which may throw std::ios_base::failure. d is unchanged in that case. | |
Notes
The parameters of a distribution object may be changed either permanently, by using d.param(p)
or just for the duration of a single operator() call, by using d(g,p)
.
Calls to const member functions of the distribution and os << d do not affect the sequence of numbers produced by repeated d(g).
Standard library
The following standard library components satisfy RandomNumberDistribution
.
uniform_int_distribution (C++11) | produces integer values evenly distributed across a range (class template) |
---|---|
uniform_real_distribution (C++11) | produces real values evenly distributed across a range (class template) |
bernoulli_distribution (C++11) | produces bool values on a Bernoulli distribution. (class) |
binomial_distribution (C++11) | produces integer values on a binomial distribution. (class template) |
negative_binomial_distribution (C++11) | produces integer values on a negative binomial distribution. (class template) |
geometric_distribution (C++11) | produces integer values on a geometric distribution. (class template) |
poisson_distribution (C++11) | produces integer values on a poisson distribution. (class template) |
exponential_distribution (C++11) | produces real values on an exponential distribution. (class template) |
gamma_distribution (C++11) | produces real values on an gamma distribution. (class template) |
weibull_distribution (C++11) | produces real values on a Weibull distribution. (class template) |
extreme_value_distribution (C++11) | produces real values on an extreme value distribution. (class template) |
normal_distribution (C++11) | produces real values on a standard normal (Gaussian) distribution. (class template) |
lognormal_distribution (C++11) | produces real values on a lognormal distribution. (class template) |
chi_squared_distribution (C++11) | produces real values on a chi-squared distribution. (class template) |
cauchy_distribution (C++11) | produces real values on a Cauchy distribution. (class template) |
fisher_f_distribution (C++11) | produces real values on a Fisher's F-distribution. (class template) |
student_t_distribution (C++11) | produces real values on a Student's t-distribution. (class template) |
discrete_distribution (C++11) | produces random integers on a discrete distribution. (class template) |
piecewise_constant_distribution (C++11) | produces real values distributed on constant subintervals. (class template) |
piecewise_linear_distribution (C++11) | produces real values distributed on defined subintervals. (class template) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/concept/RandomNumberDistribution