From cppreference.com
A
is a function object returning random numbers according to a
p(x) or a
discrete probability distribution
P(xi).
Requirements
The type D satisfies RandomNumberDistribution if
D satisfies
D satisfies
Given
T, the type named by D::result_type
P, the type named by D::param_type, which
satisfies
satisfies
satisfies
has a constructor taking identical arguments as each of the constructors of D that take arguments corresponding to the distribution parameters
has a member function with the identical name, type, and semantics, as every member function of D that returns a parameter of the distribution
declares a member typedef usingdistribution_type=D;
d, a value of type D
x and y, (possibly const) values of type D
p, a (possibly const) value of type P
g, g1, g2, lvalues of a type satisfying
os, lvalue of a specialization of
is, lvalue of a specialization of
The following expressions must be valid and have their specified effects
ExpressionTypeNotesComplexity D::result_typeTAn
Compile-time D::param_typePCompile-time D()Creates a distribution indistinguishable from any other default-constructed DConstant D(p)Creates a distribution indistinguishable from D constructed directly from the values used to construct pSame as p's construction d.reset()voidResets 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()PReturns p such that D(p).param()==pNo worse than D(p)d.param(p)voidPostcondition: d.param()==pNo worse than D(p)d(g)TThe 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 gd(g,p)TThe sequence of numbers returned by successive invocations of this call with the same g are randomly distributed according to the distribution parametrized by pAmortized constant number of invocations of gx.min()TThe greatest lower bound on the values potentially returned by x’s operator(), as determined by the current values of x’s parametersConstant x.max()TThe least upper bound on the values potentially returned by x’s operator(), as determined by the current values of x’s parametersConstant x == yboolEstablishes 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==g2Constant x != ybool!(x == y)Constant os << xReference to the type of osWrites a textual representation of the distribution parameters and internal state to os. The formatting flags and fill character of os are unchangedis >> dReference to the type of isRestores 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
. d is unchanged in that caseNotes
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
(C++11)
produces integer values evenly distributed across a range
(class template)
(C++11)
produces real values evenly distributed across a range
(class template)
(C++11)
produces bool values on a
(class)
(C++11)
produces integer values on a
(class template)
negative_binomial_distribution
(C++11)
produces integer values on a
Negative binomial distribution
(class template)
(C++11)
produces integer values on a
(class template)
(C++11)
produces integer values on a
(class template)
(C++11)
produces real values on an
(class template)
(C++11)
produces real values on a
(class template)
(C++11)
produces real values on a
(class template)
(C++11)
produces real values on an
(class template)
(C++11)
produces real values on a
Standard normal (Gaussian) distribution
(class template)
(C++11)
produces real values on a
(class template)
(C++11)
produces real values on a
(class template)
(C++11)
produces real values on a
(class template)
(C++11)
produces real values on a
(class template)
(C++11)
produces real values on a
(class template)
(C++11)
produces integer values on a discrete distribution
(class template)
piecewise_constant_distribution
(C++11)
produces real values distributed on constant subintervals
(class template)
(C++11)
produces real values distributed on defined subintervals
(class template)