| Expression | Return type | Pre/post-condition | Complexity | |
| S::result_type | T | compile-time | ||
| S() | Creates a seed sequence
    with the same initial state as all other default-constructed seed sequences
    of type S. | constant | ||
| S(ib,ie) | Creates a seed sequence
    having internal state
    that depends on some or all of the bits
    of the supplied sequence [ib,ie). | |||
| S(il) | Same as S(il.begin(), il.end()). | same as S(il.begin(), il.end()) | ||
| q.generate(rb,re) | void | |||
| r.size() | size_t | The number of 32-bit units
    that would be copied
    by a call to r.param. | constant | |
| r.param(ob) | void | Copies to the given destination
    a sequence of 32-bit units
    that can be provided
    to the constructor of a second object of type S,
    and that would reproduce in that second object
    a state indistinguishable
    from the state of the first object. | 
| Expression | Return type | Pre/post-condition | Complexity | |
| E() | Creates an engine
    with the same initial state
    as all other default-constructed engines
    of type E. | |||
| E(x) | Creates an engine
    that compares equal to x. | |||
| E(s) | Creates an engine
      with initial state determined by s. | |||
| E(q)224 | Creates an engine
    with an initial state
    that depends on a sequence
    produced by one call
    to q.generate. | same as complexity of q.generate
    called on a sequence
    whose length is size of state | ||
| e.seed() | void | Postconditions: e == E(). | same as E() | |
| e.seed(s) | void | Postconditions: e == E(s). | same as E(s) | |
| e.seed(q) | void | Postconditions: e == E(q). | same as E(q) | |
| e() | T | per [rand.req.urng] | ||
| e.discard(z)225 | void | no worse than the complexity
    of z consecutive calls e() | ||
| x == y | bool | |||
| x != y | bool | !(x == y). | ||
| os << x | reference to the type of os | With os.fmtflags set to
    ios_base::dec|ios_base::left
    and the fill character set to the space character,
    writes to os
    the textual representation
    of x's current state. In the output,
    adjacent numbers are separated
    by one or more space characters. Postconditions: The os.fmtflags and fill character are unchanged. | ||
| is >> v | reference to the type of is | With is.fmtflags
    set to ios_base::dec,
    sets v's state
    as determined by reading its textual representation from is. If bad input is encountered,
    ensures that v's state is unchanged by the operation
    and
    calls is.setstate(ios_base::failbit)
    (which may throw ios_base::failure ([iostate.flags])). If a textual representation written via os << x
    was subsequently read via is >> v,
    then x == v
    provided that there have been no intervening invocations
    of x or of v. Preconditions: is provides a textual representation
    that was previously written
    using an output stream
    whose imbued locale
    was the same as that of is,
    and whose type's template specialization arguments
    charT and traits
    were respectively the same as those of is. Postconditions: The is.fmtflags are unchanged. | 
A::A();
bool operator==(const A& a1, const A& a2);
A::A(result_type s);
template<class Sseq> A::A(Sseq& q);
void seed();
void seed(result_type s);
template<class Sseq> void seed(Sseq& q);
| Expression | Return type | Pre/post-condition | Complexity | |
| D::result_type | T | compile-time | ||
| D::param_type | P | compile-time | ||
| D() | Creates a distribution whose behavior is indistinguishable
    from that of any other newly default-constructed distribution
    of type D. | constant | ||
| D(p) | Creates a distribution whose behavior is indistinguishable
    from that of a distribution
    newly constructed directly from the values used to construct p. | same as p's construction | ||
| d.reset() | void | constant | ||
| x.param() | P | no worse than the complexity of D(p) | ||
| d.param(p) | void | Postconditions: d.param() == p. | no worse than the complexity of D(p) | |
| d(g) | T | With ,
    the sequence of numbers
    returned by successive invocations
    with the same object g
    is randomly distributed
    according to the associated
      p(z |{p})
    or
      
    function. | amortized constant number of invocations of g | |
| d(g,p) | T | The sequence of numbers
    returned by successive invocations
    with the same objects g and p
    is randomly distributed
    according to the associated
      p(z |{p})
    or
      
    function. | amortized constant number of invocations of g | |
| x.min() | T | Returns glb. | constant | |
| x.max() | T | Returns lub. | constant | |
| x == y | bool | constant | ||
| x != y | bool | !(x == y). | same as x == y. | |
| os << x | reference to the type of os | Postconditions: The os.fmtflags and fill character are unchanged. | ||
| is >> d | reference to the type of is | If bad input is encountered,
    ensures that d is unchanged by the operation
    and
    calls is.setstate(ios_base::failbit)
    (which may throw ios_base::failure ([iostate.flags])). Preconditions: is provides a textual representation
    that was previously written
    using an os whose imbued locale
    and whose type's template specialization arguments
    charT and traits
    were the same as those of is. Postconditions: The is.fmtflags are unchanged. | 
explicit linear_congruential_engine(result_type s);
template<class Sseq> explicit linear_congruential_engine(Sseq& q);
explicit mersenne_twister_engine(result_type value);
template<class Sseq> explicit mersenne_twister_engine(Sseq& q);
explicit subtract_with_carry_engine(result_type value);
template<class Sseq> explicit subtract_with_carry_engine(Sseq& q);
using minstd_rand0 =
      linear_congruential_engine<uint_fast32_t, 16'807, 0, 2'147'483'647>;
using minstd_rand =
      linear_congruential_engine<uint_fast32_t, 48'271, 0, 2'147'483'647>;
using mt19937 =
      mersenne_twister_engine<uint_fast32_t, 32, 624, 397, 31,
       0x9908'b0df, 11, 0xffff'ffff, 7, 0x9d2c'5680, 15, 0xefc6'0000, 18, 1'812'433'253>;
using mt19937_64 =
      mersenne_twister_engine<uint_fast64_t, 64, 312, 156, 31,
       0xb502'6f5a'a966'19e9, 29, 0x5555'5555'5555'5555, 17,
       0x71d6'7fff'eda6'0000, 37, 0xfff7'eee0'0000'0000, 43, 6'364'136'223'846'793'005>;
using ranlux24_base =
      subtract_with_carry_engine<uint_fast32_t, 24, 10, 24>;
using ranlux48_base =
      subtract_with_carry_engine<uint_fast64_t, 48, 5, 12>;
using ranlux24 = discard_block_engine<ranlux24_base, 223, 23>;
using ranlux48 = discard_block_engine<ranlux48_base, 389, 11>;
using knuth_b = shuffle_order_engine<minstd_rand0,256>;
explicit random_device(const string& token);
double entropy() const noexcept;
result_type operator()();
seed_seq() noexcept;
template<class T>
  seed_seq(initializer_list<T> il);
template<class InputIterator>
  seed_seq(InputIterator begin, InputIterator end);
template<class RandomAccessIterator>
  void generate(RandomAccessIterator begin, RandomAccessIterator end);
size_t size() const noexcept;
template<class OutputIterator>
  void param(OutputIterator dest) const;
template<class RealType, size_t digits, class URBG>
  RealType generate_canonical(URBG& g);
explicit uniform_int_distribution(IntType a, IntType b = numeric_limits<IntType>::max());
result_type a() const;
result_type b() const;
explicit uniform_real_distribution(RealType a, RealType b = 1.0);
result_type a() const;
result_type b() const;
explicit bernoulli_distribution(double p);
double p() const;
explicit binomial_distribution(IntType t, double p = 0.5);
IntType t() const;
double p() const;
explicit geometric_distribution(double p);
double p() const;
explicit negative_binomial_distribution(IntType k, double p = 0.5);
IntType k() const;
double p() const;
explicit poisson_distribution(double mean);
double mean() const;
explicit exponential_distribution(RealType lambda);
RealType lambda() const;
explicit gamma_distribution(RealType alpha, RealType beta = 1.0);
RealType alpha() const;
RealType beta() const;
explicit weibull_distribution(RealType a, RealType b = 1.0);
RealType a() const;
RealType b() const;
explicit extreme_value_distribution(RealType a, RealType b = 1.0);
RealType a() const;
RealType b() const;
explicit normal_distribution(RealType mean, RealType stddev = 1.0);
RealType mean() const;
RealType stddev() const;
explicit lognormal_distribution(RealType m, RealType s = 1.0);
RealType m() const;
RealType s() const;
explicit chi_squared_distribution(RealType n);
RealType n() const;
explicit cauchy_distribution(RealType a, RealType b = 1.0);
RealType a() const;
RealType b() const;
explicit fisher_f_distribution(RealType m, RealType n = 1);
RealType m() const;
RealType n() const;
explicit student_t_distribution(RealType n);
RealType n() const;
discrete_distribution();
template<class InputIterator>
  discrete_distribution(InputIterator firstW, InputIterator lastW);
discrete_distribution(initializer_list<double> wl);
template<class UnaryOperation>
  discrete_distribution(size_t nw, double xmin, double xmax, UnaryOperation fw);
vector<double> probabilities() const;
piecewise_constant_distribution();
template<class InputIteratorB, class InputIteratorW>
 piecewise_constant_distribution(InputIteratorB firstB, InputIteratorB lastB,
                                 InputIteratorW firstW);
template<class UnaryOperation>
 piecewise_constant_distribution(initializer_list<RealType> bl, UnaryOperation fw);
template<class UnaryOperation>
 piecewise_constant_distribution(size_t nw, RealType xmin, RealType xmax, UnaryOperation fw);
vector<result_type> intervals() const;
vector<result_type> densities() const;
piecewise_linear_distribution();
template<class InputIteratorB, class InputIteratorW>
 piecewise_linear_distribution(InputIteratorB firstB, InputIteratorB lastB,
                               InputIteratorW firstW);
template<class UnaryOperation>
 piecewise_linear_distribution(initializer_list<RealType> bl, UnaryOperation fw);
template<class UnaryOperation>
 piecewise_linear_distribution(size_t nw, RealType xmin, RealType xmax, UnaryOperation fw);
vector<result_type> intervals() const;
vector<result_type> densities() const;
int rand();
void srand(unsigned int seed);