C++ concepts: RandomNumberDistribution

From cppreference.com

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
)
.

[edit] Requirements

Expression Type Notes Complexity
D::result_type T An arithmetic type compile-time
D::param_type P compile-time
D() constant
D(p) Same as p's construction
d.reset() void Resets the internal state of the distribution object. After a call to this function, the next call to operator() on the distribution object will not be dependent on previous calls to operator(). constant
x.param() P No worse than D(p)
d.param(p) void No worse than D(p)
d(g) T d(g, d.param()) Same as d(g, d.param())
d(g,p) T When called with the same g and p parameter it returns a sequence of numbers distributed according to p(x;p) or P(x
i
;p)
Amortized constant number of incovations of g
x.min() T The greatest lower bound returned by operator() constant
x.max() T The least upper bound returned by operator() constant
x == y bool constant
y != 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 as textual representation. 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 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.