36 namespace std _GLIBCXX_VISIBILITY(default)
 
   38 _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   55   template<
typename _RealType, 
size_t __bits,
 
   56        typename _UniformRandomNumberGenerator>
 
   60 _GLIBCXX_END_NAMESPACE_VERSION
 
   67   _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   69     template<
typename _UIntType, 
size_t __w,
 
   70          bool = __w < static_cast<size_t>
 
   73       { 
static const _UIntType __value = 0; };
 
   75     template<
typename _UIntType, 
size_t __w>
 
   76       struct _Shift<_UIntType, __w, true>
 
   77       { 
static const _UIntType __value = _UIntType(1) << __w; };
 
   80          int __which = ((__s <= __CHAR_BIT__ * 
sizeof (int))
 
   81                 + (__s <= __CHAR_BIT__ * 
sizeof (long))
 
   82                 + (__s <= __CHAR_BIT__ * 
sizeof (
long long))
 
   85       struct _Select_uint_least_t
 
   87     static_assert(__which < 0, 
 
   88               "sorry, would be too much trouble for a slow result");
 
   92       struct _Select_uint_least_t<__s, 4>
 
   93       { 
typedef unsigned int type; };
 
   96       struct _Select_uint_least_t<__s, 3>
 
   97       { 
typedef unsigned long type; };
 
  100       struct _Select_uint_least_t<__s, 2>
 
  101       { 
typedef unsigned long long type; };
 
  103 #ifdef _GLIBCXX_USE_INT128 
  105       struct _Select_uint_least_t<__s, 1>
 
  106       { 
typedef unsigned __int128 type; };
 
  110     template<
typename _Tp, _Tp __m, _Tp __a, _Tp __c,
 
  111          bool __big_enough = (!(__m & (__m - 1))
 
  112                   || (_Tp(-1) - __c) / __a >= __m - 1),
 
  113              bool __schrage_ok = __m % __a < __m / __a>
 
  116     typedef typename _Select_uint_least_t<
std::__lg(__a)
 
  120     { 
return static_cast<_Tp
>((_Tp2(__a) * __x + __c) % __m); }
 
  124     template<
typename _Tp, _Tp __m, _Tp __a, _Tp __c>
 
  125       struct _Mod<_Tp, __m, __a, __c, false, true>
 
  134     template<
typename _Tp, _Tp __m, _Tp __a, _Tp __c, 
bool __s>
 
  135       struct _Mod<_Tp, __m, __a, __c, true, __s>
 
  140       _Tp __res = __a * __x + __c;
 
  147     template<
typename _Tp, _Tp __m, _Tp __a = 1, _Tp __c = 0>
 
  150       { 
return _Mod<_Tp, __m, __a, __c>::__calc(__x); }
 
  153     template<
typename _Tp>
 
  157     return ((__x - 1) & __x) == 0;
 
  164     template<
typename _Engine, 
typename _DInputType>
 
  169     _Adaptor(_Engine& __g)
 
  174     { 
return _DInputType(0); }
 
  178     { 
return _DInputType(1); }
 
  197   _GLIBCXX_END_NAMESPACE_VERSION
 
  200 _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
  240   template<
typename _UIntType, _UIntType __a, _UIntType __c, _UIntType __m>
 
  243       static_assert(std::is_unsigned<_UIntType>::value, 
"template argument " 
  244             "substituting _UIntType not an unsigned integral type");
 
  245       static_assert(__m == 0u || (__a < __m && __c < __m),
 
  246             "template argument substituting __m out of bounds");
 
  277       template<
typename _Sseq, 
typename = 
typename 
  278     std::enable_if<!std::is_same<_Sseq, linear_congruential_engine>::value>
 
  300       template<
typename _Sseq>
 
  301         typename std::enable_if<std::is_class<_Sseq>::value>::type
 
  312       { 
return __c == 0u ? 1u : 0u; }
 
  327     for (; __z != 0ULL; --__z)
 
  337     _M_x = __detail::__mod<_UIntType, __m, __a, __c>(_M_x);
 
  355       { 
return __lhs._M_x == __rhs._M_x; }
 
  365       template<
typename _UIntType1, _UIntType1 __a1, _UIntType1 __c1,
 
  366            _UIntType1 __m1, 
typename _CharT, 
typename _Traits>
 
  368     operator<<(std::basic_ostream<_CharT, _Traits>& __os,
 
  370            __a1, __c1, __m1>& __lcr);
 
  385       template<
typename _UIntType1, _UIntType1 __a1, _UIntType1 __c1,
 
  386            _UIntType1 __m1, 
typename _CharT, 
typename _Traits>
 
  407   template<
typename _UIntType, _UIntType __a, _UIntType __c, _UIntType __m>
 
  413     { 
return !(__lhs == __rhs); }
 
  444   template<
typename _UIntType, 
size_t __w,
 
  445        size_t __n, 
size_t __m, 
size_t __r,
 
  446        _UIntType __a, 
size_t __u, _UIntType __d, 
size_t __s,
 
  447        _UIntType __b, 
size_t __t,
 
  448        _UIntType __c, 
size_t __l, _UIntType __f>
 
  451       static_assert(std::is_unsigned<_UIntType>::value, 
"template argument " 
  452             "substituting _UIntType not an unsigned integral type");
 
  453       static_assert(1u <= __m && __m <= __n,
 
  454             "template argument substituting __m out of bounds");
 
  455       static_assert(__r <= __w, 
"template argument substituting " 
  457       static_assert(__u <= __w, 
"template argument substituting " 
  459       static_assert(__s <= __w, 
"template argument substituting " 
  461       static_assert(__t <= __w, 
"template argument substituting " 
  463       static_assert(__l <= __w, 
"template argument substituting " 
  466             "template argument substituting __w out of bound");
 
  467       static_assert(__a <= (__detail::_Shift<_UIntType, __w>::__value - 1),
 
  468             "template argument substituting __a out of bound");
 
  469       static_assert(__b <= (__detail::_Shift<_UIntType, __w>::__value - 1),
 
  470             "template argument substituting __b out of bound");
 
  471       static_assert(__c <= (__detail::_Shift<_UIntType, __w>::__value - 1),
 
  472             "template argument substituting __c out of bound");
 
  473       static_assert(__d <= (__detail::_Shift<_UIntType, __w>::__value - 1),
 
  474             "template argument substituting __d out of bound");
 
  475       static_assert(__f <= (__detail::_Shift<_UIntType, __w>::__value - 1),
 
  476             "template argument substituting __f out of bound");
 
  483       static constexpr 
size_t      word_size                 = __w;
 
  484       static constexpr 
size_t      state_size                = __n;
 
  485       static constexpr 
size_t      shift_size                = __m;
 
  486       static constexpr 
size_t      mask_bits                 = __r;
 
  488       static constexpr 
size_t      tempering_u               = __u;
 
  490       static constexpr 
size_t      tempering_s               = __s;
 
  492       static constexpr 
size_t      tempering_t               = __t;
 
  494       static constexpr 
size_t      tempering_l               = __l;
 
  495       static constexpr 
result_type initialization_multiplier = __f;
 
  509       template<
typename _Sseq, 
typename = 
typename 
  510         std::enable_if<!std::is_same<_Sseq, mersenne_twister_engine>::value>
 
  519       template<
typename _Sseq>
 
  520     typename std::enable_if<std::is_class<_Sseq>::value>::type
 
  535       { 
return __detail::_Shift<_UIntType, __w>::__value - 1; }
 
  541       discard(
unsigned long long __z);
 
  561       { 
return (
std::equal(__lhs._M_x, __lhs._M_x + state_size, __rhs._M_x)
 
  562         && __lhs._M_p == __rhs._M_p); }
 
  576       template<
typename _UIntType1,
 
  577            size_t __w1, 
size_t __n1,
 
  578            size_t __m1, 
size_t __r1,
 
  579            _UIntType1 __a1, 
size_t __u1,
 
  580            _UIntType1 __d1, 
size_t __s1,
 
  581            _UIntType1 __b1, 
size_t __t1,
 
  582            _UIntType1 __c1, 
size_t __l1, _UIntType1 __f1,
 
  583            typename _CharT, 
typename _Traits>
 
  585     operator<<(std::basic_ostream<_CharT, _Traits>& __os,
 
  587            __m1, __r1, __a1, __u1, __d1, __s1, __b1, __t1, __c1,
 
  602       template<
typename _UIntType1,
 
  603            size_t __w1, 
size_t __n1,
 
  604            size_t __m1, 
size_t __r1,
 
  605            _UIntType1 __a1, 
size_t __u1,
 
  606            _UIntType1 __d1, 
size_t __s1,
 
  607            _UIntType1 __b1, 
size_t __t1,
 
  608            _UIntType1 __c1, 
size_t __l1, _UIntType1 __f1,
 
  609            typename _CharT, 
typename _Traits>
 
  613            __r1, __a1, __u1, __d1, __s1, __b1, __t1, __c1,
 
  619       _UIntType _M_x[state_size];
 
  635   template<
typename _UIntType, 
size_t __w,
 
  636        size_t __n, 
size_t __m, 
size_t __r,
 
  637        _UIntType __a, 
size_t __u, _UIntType __d, 
size_t __s,
 
  638        _UIntType __b, 
size_t __t,
 
  639        _UIntType __c, 
size_t __l, _UIntType __f>
 
  642            __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __lhs,
 
  644            __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __rhs)
 
  645     { 
return !(__lhs == __rhs); }
 
  667   template<
typename _UIntType, 
size_t __w, 
size_t __s, 
size_t __r>
 
  668     class subtract_with_carry_engine
 
  670       static_assert(std::is_unsigned<_UIntType>::value, 
"template argument " 
  671             "substituting _UIntType not an unsigned integral type");
 
  672       static_assert(0u < __s && __s < __r,
 
  673             "template argument substituting __s out of bounds");
 
  675             "template argument substituting __w out of bounds");
 
  679       typedef _UIntType result_type;
 
  682       static constexpr 
size_t      word_size    = __w;
 
  683       static constexpr 
size_t      short_lag    = __s;
 
  684       static constexpr 
size_t      long_lag     = __r;
 
  685       static constexpr result_type default_seed = 19780503u;
 
  692       subtract_with_carry_engine(result_type __sd = default_seed)
 
  701       template<
typename _Sseq, 
typename = 
typename 
  702         std::enable_if<!std::is_same<_Sseq, subtract_with_carry_engine>::value>
 
  705         subtract_with_carry_engine(_Sseq& __q)
 
  721       seed(result_type __sd = default_seed);
 
  727       template<
typename _Sseq>
 
  728     typename std::enable_if<std::is_class<_Sseq>::value>::type
 
  735       static constexpr result_type
 
  743       static constexpr result_type
 
  745       { 
return __detail::_Shift<_UIntType, __w>::__value - 1; }
 
  751       discard(
unsigned long long __z)
 
  753     for (; __z != 0ULL; --__z)
 
  776       operator==(
const subtract_with_carry_engine& __lhs,
 
  777          const subtract_with_carry_engine& __rhs)
 
  778       { 
return (std::equal(__lhs._M_x, __lhs._M_x + long_lag, __rhs._M_x)
 
  779         && __lhs._M_carry == __rhs._M_carry
 
  780         && __lhs._M_p == __rhs._M_p); }
 
  794       template<
typename _UIntType1, 
size_t __w1, 
size_t __s1, 
size_t __r1,
 
  795            typename _CharT, 
typename _Traits>
 
  797     operator<<(std::basic_ostream<_CharT, _Traits>&,
 
  798            const std::subtract_with_carry_engine<_UIntType1, __w1,
 
  813       template<
typename _UIntType1, 
size_t __w1, 
size_t __s1, 
size_t __r1,
 
  814            typename _CharT, 
typename _Traits>
 
  817            std::subtract_with_carry_engine<_UIntType1, __w1,
 
  821       _UIntType  _M_x[long_lag];
 
  838   template<
typename _UIntType, 
size_t __w, 
size_t __s, 
size_t __r>
 
  840     operator!=(
const std::subtract_with_carry_engine<_UIntType, __w,
 
  842            const std::subtract_with_carry_engine<_UIntType, __w,
 
  844     { 
return !(__lhs == __rhs); }
 
  853   template<
typename _RandomNumberEngine, 
size_t __p, 
size_t __r>
 
  856       static_assert(1 <= __r && __r <= __p,
 
  857             "template argument substituting __r out of bounds");
 
  861       typedef typename _RandomNumberEngine::result_type 
result_type;
 
  864       static constexpr 
size_t block_size = __p;
 
  865       static constexpr 
size_t used_block = __r;
 
  873       : _M_b(), _M_n(0) { }
 
  883       : _M_b(__rng), _M_n(0) { }
 
  893       : _M_b(std::move(__rng)), _M_n(0) { }
 
  903       : _M_b(__s), _M_n(0) { }
 
  910       template<
typename _Sseq, 
typename = 
typename 
  911     std::enable_if<!std::is_same<_Sseq, discard_block_engine>::value
 
  912                && !std::is_same<_Sseq, _RandomNumberEngine>::value>
 
  946       template<
typename _Sseq>
 
  958       const _RandomNumberEngine&
 
  982     for (; __z != 0ULL; --__z)
 
 1006       { 
return __lhs._M_b == __rhs._M_b && __lhs._M_n == __rhs._M_n; }
 
 1019       template<
typename _RandomNumberEngine1, 
size_t __p1, 
size_t __r1,
 
 1020            typename _CharT, 
typename _Traits>
 
 1022     operator<<(std::basic_ostream<_CharT, _Traits>& __os,
 
 1037       template<
typename _RandomNumberEngine1, 
size_t __p1, 
size_t __r1,
 
 1038            typename _CharT, 
typename _Traits>
 
 1045       _RandomNumberEngine _M_b;
 
 1060   template<
typename _RandomNumberEngine, 
size_t __p, 
size_t __r>
 
 1066     { 
return !(__lhs == __rhs); }
 
 1073   template<
typename _RandomNumberEngine, 
size_t __w, 
typename _UIntType>
 
 1076       static_assert(std::is_unsigned<_UIntType>::value, 
"template argument " 
 1077             "substituting _UIntType not an unsigned integral type");
 
 1079             "template argument substituting __w out of bounds");
 
 1111       : _M_b(std::move(__rng)) { }
 
 1128       template<
typename _Sseq, 
typename = 
typename 
 1129     std::enable_if<!std::is_same<_Sseq, independent_bits_engine>::value
 
 1130                && !std::is_same<_Sseq, _RandomNumberEngine>::value>
 
 1158       template<
typename _Sseq>
 
 1167       const _RandomNumberEngine&
 
 1183       { 
return __detail::_Shift<_UIntType, __w>::__value - 1; }
 
 1191     for (; __z != 0ULL; --__z)
 
 1216       { 
return __lhs._M_b == __rhs._M_b; }
 
 1230       template<
typename _CharT, 
typename _Traits>
 
 1234            __w, _UIntType>& __x)
 
 1241       _RandomNumberEngine _M_b;
 
 1256   template<
typename _RandomNumberEngine, 
size_t __w, 
typename _UIntType>
 
 1262     { 
return !(__lhs == __rhs); }
 
 1274   template<
typename _RandomNumberEngine, 
size_t __w, 
typename _UIntType,
 
 1275        typename _CharT, 
typename _Traits>
 
 1277     operator<<(std::basic_ostream<_CharT, _Traits>& __os,
 
 1279            __w, _UIntType>& __x)
 
 1291   template<
typename _RandomNumberEngine, 
size_t __k>
 
 1294       static_assert(1u <= __k, 
"template argument substituting " 
 1295             "__k out of bound");
 
 1299       typedef typename _RandomNumberEngine::result_type 
result_type;
 
 1301       static constexpr 
size_t table_size = __k;
 
 1310       { _M_initialize(); }
 
 1321       { _M_initialize(); }
 
 1331       : _M_b(std::move(__rng))
 
 1332       { _M_initialize(); }
 
 1343       { _M_initialize(); }
 
 1350       template<
typename _Sseq, 
typename = 
typename 
 1351     std::enable_if<!std::is_same<_Sseq, shuffle_order_engine>::value
 
 1352                && !std::is_same<_Sseq, _RandomNumberEngine>::value>
 
 1357         { _M_initialize(); }
 
 1386       template<
typename _Sseq>
 
 1397       const _RandomNumberEngine&
 
 1421     for (; __z != 0ULL; --__z)
 
 1445       { 
return (__lhs._M_b == __rhs._M_b
 
 1446         && 
std::equal(__lhs._M_v, __lhs._M_v + __k, __rhs._M_v)
 
 1447         && __lhs._M_y == __rhs._M_y); }
 
 1460       template<
typename _RandomNumberEngine1, 
size_t __k1,
 
 1461            typename _CharT, 
typename _Traits>
 
 1463     operator<<(std::basic_ostream<_CharT, _Traits>& __os,
 
 1478       template<
typename _RandomNumberEngine1, 
size_t __k1,
 
 1479            typename _CharT, 
typename _Traits>
 
 1485       void _M_initialize()
 
 1487     for (
size_t __i = 0; __i < __k; ++__i)
 
 1492       _RandomNumberEngine _M_b;
 
 1508   template<
typename _RandomNumberEngine, 
size_t __k>
 
 1514     { 
return !(__lhs == __rhs); }
 
 1520   typedef linear_congruential_engine<uint_fast32_t, 16807UL, 0UL, 2147483647UL>
 
 1551     0xb5026f5aa96619e9ULL, 29,
 
 1552     0x5555555555555555ULL, 17,
 
 1553     0x71d67fffeda60000ULL, 37,
 
 1554     0xfff7eee000000000ULL, 43,
 
 1557   typedef subtract_with_carry_engine<uint_fast32_t, 24, 10, 24>
 
 1560   typedef subtract_with_carry_engine<uint_fast64_t, 48, 5, 12>
 
 1583 #ifdef _GLIBCXX_USE_RANDOM_TR1 
 1597     random_device(
const std::string& __token = 
"mt19937")
 
 1598     { _M_init_pretr1(__token); }
 
 1613     entropy() const noexcept
 
 1619 #ifdef _GLIBCXX_USE_RANDOM_TR1 
 1620       return this->_M_getval();
 
 1622       return this->_M_getval_pretr1();
 
 1627     random_device(
const random_device&) = 
delete;
 
 1628     void operator=(
const random_device&) = 
delete;
 
 1665   template<
typename _IntType = 
int>
 
 1669             "template argument not an integral type");
 
 1682     : _M_a(__a), _M_b(__b)
 
 1684       _GLIBCXX_DEBUG_ASSERT(_M_a <= _M_b);
 
 1697     { 
return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; }
 
 1711       : _M_param(__a, __b)
 
 1729       { 
return _M_param.a(); }
 
 1733       { 
return _M_param.b(); }
 
 1740       { 
return _M_param; }
 
 1748       { _M_param = __param; }
 
 1755       { 
return this->a(); }
 
 1762       { 
return this->b(); }
 
 1767       template<
typename _UniformRandomNumberGenerator>
 
 1770         { 
return this->
operator()(__urng, _M_param); }
 
 1772       template<
typename _UniformRandomNumberGenerator>
 
 1774     operator()(_UniformRandomNumberGenerator& __urng,
 
 1775            const param_type& __p);
 
 1777       template<
typename _ForwardIterator,
 
 1778            typename _UniformRandomNumberGenerator>
 
 1780     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 1781            _UniformRandomNumberGenerator& __urng)
 
 1782     { this->__generate(__f, __t, __urng, _M_param); }
 
 1784       template<
typename _ForwardIterator,
 
 1785            typename _UniformRandomNumberGenerator>
 
 1787     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 1788            _UniformRandomNumberGenerator& __urng,
 
 1789            const param_type& __p)
 
 1790     { this->__generate_impl(__f, __t, __urng, __p); }
 
 1792       template<
typename _UniformRandomNumberGenerator>
 
 1795            _UniformRandomNumberGenerator& __urng,
 
 1796            const param_type& __p)
 
 1797     { this->__generate_impl(__f, __t, __urng, __p); }
 
 1806       { 
return __d1._M_param == __d2._M_param; }
 
 1809       template<
typename _ForwardIterator,
 
 1810            typename _UniformRandomNumberGenerator>
 
 1812     __generate_impl(_ForwardIterator __f, _ForwardIterator __t,
 
 1813             _UniformRandomNumberGenerator& __urng,
 
 1814             const param_type& __p);
 
 1816       param_type _M_param;
 
 1823   template<
typename _IntType>
 
 1827     { 
return !(__d1 == __d2); }
 
 1839   template<
typename _IntType, 
typename _CharT, 
typename _Traits>
 
 1841     operator<<(std::basic_ostream<_CharT, _Traits>&,
 
 1853   template<
typename _IntType, 
typename _CharT, 
typename _Traits>
 
 1866   template<
typename _RealType = 
double>
 
 1870             "template argument not a floating point type");
 
 1882            _RealType __b = _RealType(1))
 
 1883     : _M_a(__a), _M_b(__b)
 
 1885       _GLIBCXX_DEBUG_ASSERT(_M_a <= _M_b);
 
 1898     { 
return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; }
 
 1914                 _RealType __b = _RealType(1))
 
 1915       : _M_param(__a, __b)
 
 1933       { 
return _M_param.a(); }
 
 1937       { 
return _M_param.b(); }
 
 1944       { 
return _M_param; }
 
 1952       { _M_param = __param; }
 
 1959       { 
return this->a(); }
 
 1966       { 
return this->b(); }
 
 1971       template<
typename _UniformRandomNumberGenerator>
 
 1974         { 
return this->
operator()(__urng, _M_param); }
 
 1976       template<
typename _UniformRandomNumberGenerator>
 
 1978     operator()(_UniformRandomNumberGenerator& __urng,
 
 1979            const param_type& __p)
 
 1981       __detail::_Adaptor<_UniformRandomNumberGenerator, result_type>
 
 1983       return (__aurng() * (__p.b() - __p.a())) + __p.a();
 
 1986       template<
typename _ForwardIterator,
 
 1987            typename _UniformRandomNumberGenerator>
 
 1989     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 1990            _UniformRandomNumberGenerator& __urng)
 
 1991     { this->__generate(__f, __t, __urng, _M_param); }
 
 1993       template<
typename _ForwardIterator,
 
 1994            typename _UniformRandomNumberGenerator>
 
 1996     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 1997            _UniformRandomNumberGenerator& __urng,
 
 1998            const param_type& __p)
 
 1999     { this->__generate_impl(__f, __t, __urng, __p); }
 
 2001       template<
typename _UniformRandomNumberGenerator>
 
 2004            _UniformRandomNumberGenerator& __urng,
 
 2005            const param_type& __p)
 
 2006     { this->__generate_impl(__f, __t, __urng, __p); }
 
 2015       { 
return __d1._M_param == __d2._M_param; }
 
 2018       template<
typename _ForwardIterator,
 
 2019            typename _UniformRandomNumberGenerator>
 
 2021     __generate_impl(_ForwardIterator __f, _ForwardIterator __t,
 
 2022             _UniformRandomNumberGenerator& __urng,
 
 2023             const param_type& __p);
 
 2025       param_type _M_param;
 
 2032   template<
typename _IntType>
 
 2036     { 
return !(__d1 == __d2); }
 
 2048   template<
typename _RealType, 
typename _CharT, 
typename _Traits>
 
 2050     operator<<(std::basic_ostream<_CharT, _Traits>&,
 
 2062   template<
typename _RealType, 
typename _CharT, 
typename _Traits>
 
 2084   template<
typename _RealType = 
double>
 
 2088             "template argument not a floating point type");
 
 2100            _RealType __stddev = _RealType(1))
 
 2101     : _M_mean(__mean), _M_stddev(__stddev)
 
 2103       _GLIBCXX_DEBUG_ASSERT(_M_stddev > _RealType(0));
 
 2112     { 
return _M_stddev; }
 
 2116     { 
return (__p1._M_mean == __p2._M_mean
 
 2117           && __p1._M_stddev == __p2._M_stddev); }
 
 2121     _RealType _M_stddev;
 
 2132       : _M_param(__mean, __stddev), _M_saved_available(false)
 
 2137       : _M_param(__p), _M_saved_available(false)
 
 2145       { _M_saved_available = 
false; }
 
 2152       { 
return _M_param.mean(); }
 
 2159       { 
return _M_param.stddev(); }
 
 2166       { 
return _M_param; }
 
 2174       { _M_param = __param; }
 
 2193       template<
typename _UniformRandomNumberGenerator>
 
 2196     { 
return this->
operator()(__urng, _M_param); }
 
 2198       template<
typename _UniformRandomNumberGenerator>
 
 2200     operator()(_UniformRandomNumberGenerator& __urng,
 
 2201            const param_type& __p);
 
 2203       template<
typename _ForwardIterator,
 
 2204            typename _UniformRandomNumberGenerator>
 
 2206     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 2207            _UniformRandomNumberGenerator& __urng)
 
 2208     { this->__generate(__f, __t, __urng, _M_param); }
 
 2210       template<
typename _ForwardIterator,
 
 2211            typename _UniformRandomNumberGenerator>
 
 2213     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 2214            _UniformRandomNumberGenerator& __urng,
 
 2215            const param_type& __p)
 
 2216     { this->__generate_impl(__f, __t, __urng, __p); }
 
 2218       template<
typename _UniformRandomNumberGenerator>
 
 2221            _UniformRandomNumberGenerator& __urng,
 
 2222            const param_type& __p)
 
 2223     { this->__generate_impl(__f, __t, __urng, __p); }
 
 2230       template<
typename _RealType1>
 
 2245       template<
typename _RealType1, 
typename _CharT, 
typename _Traits>
 
 2247     operator<<(std::basic_ostream<_CharT, _Traits>& __os,
 
 2260       template<
typename _RealType1, 
typename _CharT, 
typename _Traits>
 
 2266       template<
typename _ForwardIterator,
 
 2267            typename _UniformRandomNumberGenerator>
 
 2269     __generate_impl(_ForwardIterator __f, _ForwardIterator __t,
 
 2270             _UniformRandomNumberGenerator& __urng,
 
 2271             const param_type& __p);
 
 2273       param_type  _M_param;
 
 2275       bool        _M_saved_available;
 
 2281   template<
typename _RealType>
 
 2285     { 
return !(__d1 == __d2); }
 
 2297   template<
typename _RealType = 
double>
 
 2301             "template argument not a floating point type");
 
 2313            _RealType __s = _RealType(1))
 
 2314     : _M_m(__m), _M_s(__s)
 
 2327     { 
return __p1._M_m == __p2._M_m && __p1._M_s == __p2._M_s; }
 
 2336                  _RealType __s = _RealType(1))
 
 2337       : _M_param(__m, __s), _M_nd()
 
 2342       : _M_param(__p), _M_nd()
 
 2357       { 
return _M_param.m(); }
 
 2361       { 
return _M_param.s(); }
 
 2368       { 
return _M_param; }
 
 2376       { _M_param = __param; }
 
 2395       template<
typename _UniformRandomNumberGenerator>
 
 2398         { 
return this->
operator()(__urng, _M_param); }
 
 2400       template<
typename _UniformRandomNumberGenerator>
 
 2402     operator()(_UniformRandomNumberGenerator& __urng,
 
 2403            const param_type& __p)
 
 2404         { 
return std::exp(__p.s() * _M_nd(__urng) + __p.m()); }
 
 2406       template<
typename _ForwardIterator,
 
 2407            typename _UniformRandomNumberGenerator>
 
 2409     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 2410            _UniformRandomNumberGenerator& __urng)
 
 2411     { this->__generate(__f, __t, __urng, _M_param); }
 
 2413       template<
typename _ForwardIterator,
 
 2414            typename _UniformRandomNumberGenerator>
 
 2416     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 2417            _UniformRandomNumberGenerator& __urng,
 
 2418            const param_type& __p)
 
 2419     { this->__generate_impl(__f, __t, __urng, __p); }
 
 2421       template<
typename _UniformRandomNumberGenerator>
 
 2424            _UniformRandomNumberGenerator& __urng,
 
 2425            const param_type& __p)
 
 2426     { this->__generate_impl(__f, __t, __urng, __p); }
 
 2436       { 
return (__d1._M_param == __d2._M_param
 
 2437         && __d1._M_nd == __d2._M_nd); }
 
 2449       template<
typename _RealType1, 
typename _CharT, 
typename _Traits>
 
 2451     operator<<(std::basic_ostream<_CharT, _Traits>& __os,
 
 2464       template<
typename _RealType1, 
typename _CharT, 
typename _Traits>
 
 2470       template<
typename _ForwardIterator,
 
 2471            typename _UniformRandomNumberGenerator>
 
 2473     __generate_impl(_ForwardIterator __f, _ForwardIterator __t,
 
 2474             _UniformRandomNumberGenerator& __urng,
 
 2475             const param_type& __p);
 
 2477       param_type _M_param;
 
 2485   template<
typename _RealType>
 
 2489     { 
return !(__d1 == __d2); }
 
 2501   template<
typename _RealType = 
double>
 
 2505             "template argument not a floating point type");
 
 2517     param_type(_RealType __alpha_val = _RealType(1),
 
 2518            _RealType __beta_val = _RealType(1))
 
 2519     : _M_alpha(__alpha_val), _M_beta(__beta_val)
 
 2521       _GLIBCXX_DEBUG_ASSERT(_M_alpha > _RealType(0));
 
 2527     { 
return _M_alpha; }
 
 2534     operator==(
const param_type& __p1, 
const param_type& __p2)
 
 2535     { 
return (__p1._M_alpha == __p2._M_alpha
 
 2536           && __p1._M_beta == __p2._M_beta); }
 
 2545     _RealType _M_malpha, _M_a2;
 
 2555              _RealType __beta_val = _RealType(1))
 
 2556       : _M_param(__alpha_val, __beta_val), _M_nd()
 
 2561       : _M_param(__p), _M_nd()
 
 2576       { 
return _M_param.alpha(); }
 
 2583       { 
return _M_param.beta(); }
 
 2590       { 
return _M_param; }
 
 2598       { _M_param = __param; }
 
 2617       template<
typename _UniformRandomNumberGenerator>
 
 2620     { 
return this->
operator()(__urng, _M_param); }
 
 2622       template<
typename _UniformRandomNumberGenerator>
 
 2624     operator()(_UniformRandomNumberGenerator& __urng,
 
 2625            const param_type& __p);
 
 2627       template<
typename _ForwardIterator,
 
 2628            typename _UniformRandomNumberGenerator>
 
 2630     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 2631            _UniformRandomNumberGenerator& __urng)
 
 2632     { this->__generate(__f, __t, __urng, _M_param); }
 
 2634       template<
typename _ForwardIterator,
 
 2635            typename _UniformRandomNumberGenerator>
 
 2637     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 2638            _UniformRandomNumberGenerator& __urng,
 
 2639            const param_type& __p)
 
 2640     { this->__generate_impl(__f, __t, __urng, __p); }
 
 2642       template<
typename _UniformRandomNumberGenerator>
 
 2645            _UniformRandomNumberGenerator& __urng,
 
 2646            const param_type& __p)
 
 2647     { this->__generate_impl(__f, __t, __urng, __p); }
 
 2657       { 
return (__d1._M_param == __d2._M_param
 
 2658         && __d1._M_nd == __d2._M_nd); }
 
 2670       template<
typename _RealType1, 
typename _CharT, 
typename _Traits>
 
 2672     operator<<(std::basic_ostream<_CharT, _Traits>& __os,
 
 2684       template<
typename _RealType1, 
typename _CharT, 
typename _Traits>
 
 2690       template<
typename _ForwardIterator,
 
 2691            typename _UniformRandomNumberGenerator>
 
 2693     __generate_impl(_ForwardIterator __f, _ForwardIterator __t,
 
 2694             _UniformRandomNumberGenerator& __urng,
 
 2695             const param_type& __p);
 
 2697       param_type _M_param;
 
 2705    template<
typename _RealType>
 
 2709     { 
return !(__d1 == __d2); }
 
 2718   template<
typename _RealType = 
double>
 
 2722             "template argument not a floating point type");
 
 2743     { 
return __p1._M_n == __p2._M_n; }
 
 2751       : _M_param(__n), _M_gd(__n / 2)
 
 2756       : _M_param(__p), _M_gd(__p.n() / 2)
 
 2771       { 
return _M_param.n(); }
 
 2778       { 
return _M_param; }
 
 2786       { _M_param = __param; }
 
 2805       template<
typename _UniformRandomNumberGenerator>
 
 2808     { 
return 2 * _M_gd(__urng); }
 
 2810       template<
typename _UniformRandomNumberGenerator>
 
 2812     operator()(_UniformRandomNumberGenerator& __urng,
 
 2813            const param_type& __p)
 
 2817       return 2 * _M_gd(__urng, param_type(__p.n() / 2));
 
 2820       template<
typename _ForwardIterator,
 
 2821            typename _UniformRandomNumberGenerator>
 
 2823     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 2824            _UniformRandomNumberGenerator& __urng)
 
 2825         { this->__generate_impl(__f, __t, __urng); }
 
 2827       template<
typename _ForwardIterator,
 
 2828            typename _UniformRandomNumberGenerator>
 
 2830     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 2831            _UniformRandomNumberGenerator& __urng,
 
 2832            const param_type& __p)
 
 2835       this->__generate_impl(__f, __t, __urng, __p2); }
 
 2837       template<
typename _UniformRandomNumberGenerator>
 
 2840            _UniformRandomNumberGenerator& __urng)
 
 2841         { this->__generate_impl(__f, __t, __urng); }
 
 2843       template<
typename _UniformRandomNumberGenerator>
 
 2846            _UniformRandomNumberGenerator& __urng,
 
 2847            const param_type& __p)
 
 2850       this->__generate_impl(__f, __t, __urng, __p2); }
 
 2860       { 
return __d1._M_param == __d2._M_param && __d1._M_gd == __d2._M_gd; }
 
 2872       template<
typename _RealType1, 
typename _CharT, 
typename _Traits>
 
 2874     operator<<(std::basic_ostream<_CharT, _Traits>& __os,
 
 2887       template<
typename _RealType1, 
typename _CharT, 
typename _Traits>
 
 2893       template<
typename _ForwardIterator,
 
 2894            typename _UniformRandomNumberGenerator>
 
 2896     __generate_impl(_ForwardIterator __f, _ForwardIterator __t,
 
 2897             _UniformRandomNumberGenerator& __urng);
 
 2899       template<
typename _ForwardIterator,
 
 2900            typename _UniformRandomNumberGenerator>
 
 2902     __generate_impl(_ForwardIterator __f, _ForwardIterator __t,
 
 2903             _UniformRandomNumberGenerator& __urng,
 
 2907       param_type _M_param;
 
 2915   template<
typename _RealType>
 
 2919     { 
return !(__d1 == __d2); }
 
 2928   template<
typename _RealType = 
double>
 
 2932             "template argument not a floating point type");
 
 2943     param_type(_RealType __a = _RealType(0),
 
 2944            _RealType __b = _RealType(1))
 
 2945     : _M_a(__a), _M_b(__b)
 
 2957     operator==(
const param_type& __p1, 
const param_type& __p2)
 
 2958     { 
return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; }
 
 2967               _RealType __b = _RealType(1))
 
 2968       : _M_param(__a, __b)
 
 2988       { 
return _M_param.a(); }
 
 2992       { 
return _M_param.b(); }
 
 2999       { 
return _M_param; }
 
 3007       { _M_param = __param; }
 
 3026       template<
typename _UniformRandomNumberGenerator>
 
 3029     { 
return this->
operator()(__urng, _M_param); }
 
 3031       template<
typename _UniformRandomNumberGenerator>
 
 3033     operator()(_UniformRandomNumberGenerator& __urng,
 
 3034            const param_type& __p);
 
 3036       template<
typename _ForwardIterator,
 
 3037            typename _UniformRandomNumberGenerator>
 
 3039     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 3040            _UniformRandomNumberGenerator& __urng)
 
 3041     { this->__generate(__f, __t, __urng, _M_param); }
 
 3043       template<
typename _ForwardIterator,
 
 3044            typename _UniformRandomNumberGenerator>
 
 3046     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 3047            _UniformRandomNumberGenerator& __urng,
 
 3048            const param_type& __p)
 
 3049     { this->__generate_impl(__f, __t, __urng, __p); }
 
 3051       template<
typename _UniformRandomNumberGenerator>
 
 3054            _UniformRandomNumberGenerator& __urng,
 
 3055            const param_type& __p)
 
 3056     { this->__generate_impl(__f, __t, __urng, __p); }
 
 3065       { 
return __d1._M_param == __d2._M_param; }
 
 3068       template<
typename _ForwardIterator,
 
 3069            typename _UniformRandomNumberGenerator>
 
 3071     __generate_impl(_ForwardIterator __f, _ForwardIterator __t,
 
 3072             _UniformRandomNumberGenerator& __urng,
 
 3073             const param_type& __p);
 
 3075       param_type _M_param;
 
 3082   template<
typename _RealType>
 
 3086     { 
return !(__d1 == __d2); }
 
 3098   template<
typename _RealType, 
typename _CharT, 
typename _Traits>
 
 3100     operator<<(std::basic_ostream<_CharT, _Traits>& __os,
 
 3113   template<
typename _RealType, 
typename _CharT, 
typename _Traits>
 
 3129   template<
typename _RealType = 
double>
 
 3133             "template argument not a floating point type");
 
 3144     param_type(_RealType __m = _RealType(1),
 
 3145            _RealType __n = _RealType(1))
 
 3146     : _M_m(__m), _M_n(__n)
 
 3158     operator==(
const param_type& __p1, 
const param_type& __p2)
 
 3159     { 
return __p1._M_m == __p2._M_m && __p1._M_n == __p2._M_n; }
 
 3168                 _RealType __n = _RealType(1))
 
 3169       : _M_param(__m, __n), _M_gd_x(__m / 2), _M_gd_y(__n / 2)
 
 3174       : _M_param(__p), _M_gd_x(__p.m() / 2), _M_gd_y(__p.n() / 2)
 
 3192       { 
return _M_param.m(); }
 
 3196       { 
return _M_param.n(); }
 
 3203       { 
return _M_param; }
 
 3211       { _M_param = __param; }
 
 3230       template<
typename _UniformRandomNumberGenerator>
 
 3233     { 
return (_M_gd_x(__urng) * n()) / (_M_gd_y(__urng) * m()); }
 
 3235       template<
typename _UniformRandomNumberGenerator>
 
 3237     operator()(_UniformRandomNumberGenerator& __urng,
 
 3238            const param_type& __p)
 
 3242       return ((_M_gd_x(__urng, param_type(__p.m() / 2)) * n())
 
 3243           / (_M_gd_y(__urng, param_type(__p.n() / 2)) * m()));
 
 3246       template<
typename _ForwardIterator,
 
 3247            typename _UniformRandomNumberGenerator>
 
 3249     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 3250            _UniformRandomNumberGenerator& __urng)
 
 3251     { this->__generate_impl(__f, __t, __urng); }
 
 3253       template<
typename _ForwardIterator,
 
 3254            typename _UniformRandomNumberGenerator>
 
 3256     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 3257            _UniformRandomNumberGenerator& __urng,
 
 3258            const param_type& __p)
 
 3259     { this->__generate_impl(__f, __t, __urng, __p); }
 
 3261       template<
typename _UniformRandomNumberGenerator>
 
 3264            _UniformRandomNumberGenerator& __urng)
 
 3265     { this->__generate_impl(__f, __t, __urng); }
 
 3267       template<
typename _UniformRandomNumberGenerator>
 
 3270            _UniformRandomNumberGenerator& __urng,
 
 3271            const param_type& __p)
 
 3272     { this->__generate_impl(__f, __t, __urng, __p); }
 
 3282       { 
return (__d1._M_param == __d2._M_param
 
 3283         && __d1._M_gd_x == __d2._M_gd_x
 
 3284         && __d1._M_gd_y == __d2._M_gd_y); }
 
 3296       template<
typename _RealType1, 
typename _CharT, 
typename _Traits>
 
 3298     operator<<(std::basic_ostream<_CharT, _Traits>& __os,
 
 3311       template<
typename _RealType1, 
typename _CharT, 
typename _Traits>
 
 3317       template<
typename _ForwardIterator,
 
 3318            typename _UniformRandomNumberGenerator>
 
 3320     __generate_impl(_ForwardIterator __f, _ForwardIterator __t,
 
 3321             _UniformRandomNumberGenerator& __urng);
 
 3323       template<
typename _ForwardIterator,
 
 3324            typename _UniformRandomNumberGenerator>
 
 3326     __generate_impl(_ForwardIterator __f, _ForwardIterator __t,
 
 3327             _UniformRandomNumberGenerator& __urng,
 
 3328             const param_type& __p);
 
 3330       param_type _M_param;
 
 3338   template<
typename _RealType>
 
 3342     { 
return !(__d1 == __d2); }
 
 3353   template<
typename _RealType = 
double>
 
 3357             "template argument not a floating point type");
 
 3368     param_type(_RealType __n = _RealType(1))
 
 3377     operator==(
const param_type& __p1, 
const param_type& __p2)
 
 3378     { 
return __p1._M_n == __p2._M_n; }
 
 3386       : _M_param(__n), _M_nd(), _M_gd(__n / 2, 2)
 
 3391       : _M_param(__p), _M_nd(), _M_gd(__p.n() / 2, 2)
 
 3409       { 
return _M_param.n(); }
 
 3416       { 
return _M_param; }
 
 3424       { _M_param = __param; }
 
 3443       template<
typename _UniformRandomNumberGenerator>
 
 3446         { 
return _M_nd(__urng) * 
std::sqrt(n() / _M_gd(__urng)); }
 
 3448       template<
typename _UniformRandomNumberGenerator>
 
 3450     operator()(_UniformRandomNumberGenerator& __urng,
 
 3451            const param_type& __p)
 
 3456       const result_type __g = _M_gd(__urng, param_type(__p.n() / 2, 2));
 
 3457       return _M_nd(__urng) * 
std::sqrt(__p.n() / __g);
 
 3460       template<
typename _ForwardIterator,
 
 3461            typename _UniformRandomNumberGenerator>
 
 3463     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 3464            _UniformRandomNumberGenerator& __urng)
 
 3465     { this->__generate_impl(__f, __t, __urng); }
 
 3467       template<
typename _ForwardIterator,
 
 3468            typename _UniformRandomNumberGenerator>
 
 3470     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 3471            _UniformRandomNumberGenerator& __urng,
 
 3472            const param_type& __p)
 
 3473     { this->__generate_impl(__f, __t, __urng, __p); }
 
 3475       template<
typename _UniformRandomNumberGenerator>
 
 3478            _UniformRandomNumberGenerator& __urng)
 
 3479     { this->__generate_impl(__f, __t, __urng); }
 
 3481       template<
typename _UniformRandomNumberGenerator>
 
 3484            _UniformRandomNumberGenerator& __urng,
 
 3485            const param_type& __p)
 
 3486     { this->__generate_impl(__f, __t, __urng, __p); }
 
 3496       { 
return (__d1._M_param == __d2._M_param
 
 3497         && __d1._M_nd == __d2._M_nd && __d1._M_gd == __d2._M_gd); }
 
 3509       template<
typename _RealType1, 
typename _CharT, 
typename _Traits>
 
 3511     operator<<(std::basic_ostream<_CharT, _Traits>& __os,
 
 3524       template<
typename _RealType1, 
typename _CharT, 
typename _Traits>
 
 3530       template<
typename _ForwardIterator,
 
 3531            typename _UniformRandomNumberGenerator>
 
 3533     __generate_impl(_ForwardIterator __f, _ForwardIterator __t,
 
 3534             _UniformRandomNumberGenerator& __urng);
 
 3535       template<
typename _ForwardIterator,
 
 3536            typename _UniformRandomNumberGenerator>
 
 3538     __generate_impl(_ForwardIterator __f, _ForwardIterator __t,
 
 3539             _UniformRandomNumberGenerator& __urng,
 
 3540             const param_type& __p);
 
 3542       param_type _M_param;
 
 3551   template<
typename _RealType>
 
 3555     { 
return !(__d1 == __d2); }
 
 3583       param_type(
double __p = 0.5)
 
 3586     _GLIBCXX_DEBUG_ASSERT((_M_p >= 0.0) && (_M_p <= 1.0));
 
 3594       operator==(
const param_type& __p1, 
const param_type& __p2)
 
 3595       { 
return __p1._M_p == __p2._M_p; }
 
 3631     { 
return _M_param.p(); }
 
 3638     { 
return _M_param; }
 
 3646     { _M_param = __param; }
 
 3665     template<
typename _UniformRandomNumberGenerator>
 
 3668       { 
return this->
operator()(__urng, _M_param); }
 
 3670     template<
typename _UniformRandomNumberGenerator>
 
 3672       operator()(_UniformRandomNumberGenerator& __urng,
 
 3673          const param_type& __p)
 
 3675     __detail::_Adaptor<_UniformRandomNumberGenerator, double>
 
 3677     if ((__aurng() - __aurng.min())
 
 3678          < __p.p() * (__aurng.max() - __aurng.min()))
 
 3683     template<
typename _ForwardIterator,
 
 3684          typename _UniformRandomNumberGenerator>
 
 3686       __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 3687          _UniformRandomNumberGenerator& __urng)
 
 3688       { this->__generate(__f, __t, __urng, _M_param); }
 
 3690     template<
typename _ForwardIterator,
 
 3691          typename _UniformRandomNumberGenerator>
 
 3693       __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 3694          _UniformRandomNumberGenerator& __urng, 
const param_type& __p)
 
 3695       { this->__generate_impl(__f, __t, __urng, __p); }
 
 3697     template<
typename _UniformRandomNumberGenerator>
 
 3700          _UniformRandomNumberGenerator& __urng,
 
 3701          const param_type& __p)
 
 3702       { this->__generate_impl(__f, __t, __urng, __p); }
 
 3711     { 
return __d1._M_param == __d2._M_param; }
 
 3714     template<
typename _ForwardIterator,
 
 3715          typename _UniformRandomNumberGenerator>
 
 3717       __generate_impl(_ForwardIterator __f, _ForwardIterator __t,
 
 3718               _UniformRandomNumberGenerator& __urng,
 
 3719               const param_type& __p);
 
 3721     param_type _M_param;
 
 3731   { 
return !(__d1 == __d2); }
 
 3743   template<
typename _CharT, 
typename _Traits>
 
 3745     operator<<(std::basic_ostream<_CharT, _Traits>& __os,
 
 3757   template<
typename _CharT, 
typename _Traits>
 
 3776   template<
typename _IntType = 
int>
 
 3780             "template argument not an integral type");
 
 3792     param_type(_IntType __t = _IntType(1), 
double __p = 0.5)
 
 3793     : _M_t(__t), _M_p(__p)
 
 3795       _GLIBCXX_DEBUG_ASSERT((_M_t >= _IntType(0))
 
 3810     operator==(
const param_type& __p1, 
const param_type& __p2)
 
 3811     { 
return __p1._M_t == __p2._M_t && __p1._M_p == __p2._M_p; }
 
 3821 #if _GLIBCXX_USE_C99_MATH_TR1 
 3822     double _M_d1, _M_d2, _M_s1, _M_s2, _M_c,
 
 3823            _M_a1, _M_a123, _M_s, _M_lf, _M_lp1p;
 
 3832       : _M_param(__t, __p), _M_nd()
 
 3837       : _M_param(__p), _M_nd()
 
 3852       { 
return _M_param.t(); }
 
 3859       { 
return _M_param.p(); }
 
 3866       { 
return _M_param; }
 
 3874       { _M_param = __param; }
 
 3888       { 
return _M_param.t(); }
 
 3893       template<
typename _UniformRandomNumberGenerator>
 
 3896     { 
return this->
operator()(__urng, _M_param); }
 
 3898       template<
typename _UniformRandomNumberGenerator>
 
 3900     operator()(_UniformRandomNumberGenerator& __urng,
 
 3901            const param_type& __p);
 
 3903       template<
typename _ForwardIterator,
 
 3904            typename _UniformRandomNumberGenerator>
 
 3906     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 3907            _UniformRandomNumberGenerator& __urng)
 
 3908     { this->__generate(__f, __t, __urng, _M_param); }
 
 3910       template<
typename _ForwardIterator,
 
 3911            typename _UniformRandomNumberGenerator>
 
 3913     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 3914            _UniformRandomNumberGenerator& __urng,
 
 3915            const param_type& __p)
 
 3916     { this->__generate_impl(__f, __t, __urng, __p); }
 
 3918       template<
typename _UniformRandomNumberGenerator>
 
 3921            _UniformRandomNumberGenerator& __urng,
 
 3922            const param_type& __p)
 
 3923     { this->__generate_impl(__f, __t, __urng, __p); }
 
 3933 #ifdef _GLIBCXX_USE_C99_MATH_TR1 
 3934     { 
return __d1._M_param == __d2._M_param && __d1._M_nd == __d2._M_nd; }
 
 3936         { 
return __d1._M_param == __d2._M_param; }
 
 3949       template<
typename _IntType1,
 
 3950            typename _CharT, 
typename _Traits>
 
 3952     operator<<(std::basic_ostream<_CharT, _Traits>& __os,
 
 3965       template<
typename _IntType1,
 
 3966            typename _CharT, 
typename _Traits>
 
 3972       template<
typename _ForwardIterator,
 
 3973            typename _UniformRandomNumberGenerator>
 
 3975     __generate_impl(_ForwardIterator __f, _ForwardIterator __t,
 
 3976             _UniformRandomNumberGenerator& __urng,
 
 3977             const param_type& __p);
 
 3979       template<
typename _UniformRandomNumberGenerator>
 
 3981     _M_waiting(_UniformRandomNumberGenerator& __urng,
 
 3982            _IntType __t, 
double __q);
 
 3984       param_type _M_param;
 
 3993   template<
typename _IntType>
 
 3997     { 
return !(__d1 == __d2); }
 
 4007   template<
typename _IntType = 
int>
 
 4011             "template argument not an integral type");
 
 4023     param_type(
double __p = 0.5)
 
 4026       _GLIBCXX_DEBUG_ASSERT((_M_p > 0.0) && (_M_p < 1.0));
 
 4035     operator==(
const param_type& __p1, 
const param_type& __p2)
 
 4036     { 
return __p1._M_p == __p2._M_p; }
 
 4041     { _M_log_1_p = 
std::log(1.0 - _M_p); }
 
 4072       { 
return _M_param.p(); }
 
 4079       { 
return _M_param; }
 
 4087       { _M_param = __param; }
 
 4106       template<
typename _UniformRandomNumberGenerator>
 
 4109     { 
return this->
operator()(__urng, _M_param); }
 
 4111       template<
typename _UniformRandomNumberGenerator>
 
 4113     operator()(_UniformRandomNumberGenerator& __urng,
 
 4114            const param_type& __p);
 
 4116       template<
typename _ForwardIterator,
 
 4117            typename _UniformRandomNumberGenerator>
 
 4119     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 4120            _UniformRandomNumberGenerator& __urng)
 
 4121     { this->__generate(__f, __t, __urng, _M_param); }
 
 4123       template<
typename _ForwardIterator,
 
 4124            typename _UniformRandomNumberGenerator>
 
 4126     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 4127            _UniformRandomNumberGenerator& __urng,
 
 4128            const param_type& __p)
 
 4129     { this->__generate_impl(__f, __t, __urng, __p); }
 
 4131       template<
typename _UniformRandomNumberGenerator>
 
 4134            _UniformRandomNumberGenerator& __urng,
 
 4135            const param_type& __p)
 
 4136     { this->__generate_impl(__f, __t, __urng, __p); }
 
 4145       { 
return __d1._M_param == __d2._M_param; }
 
 4148       template<
typename _ForwardIterator,
 
 4149            typename _UniformRandomNumberGenerator>
 
 4151     __generate_impl(_ForwardIterator __f, _ForwardIterator __t,
 
 4152             _UniformRandomNumberGenerator& __urng,
 
 4153             const param_type& __p);
 
 4155       param_type _M_param;
 
 4162   template<
typename _IntType>
 
 4166     { 
return !(__d1 == __d2); }
 
 4178   template<
typename _IntType,
 
 4179        typename _CharT, 
typename _Traits>
 
 4181     operator<<(std::basic_ostream<_CharT, _Traits>& __os,
 
 4193   template<
typename _IntType,
 
 4194        typename _CharT, 
typename _Traits>
 
 4207   template<
typename _IntType = 
int>
 
 4211             "template argument not an integral type");
 
 4222     param_type(_IntType __k = 1, 
double __p = 0.5)
 
 4223     : _M_k(__k), _M_p(__p)
 
 4225       _GLIBCXX_DEBUG_ASSERT((_M_k > 0) && (_M_p > 0.0) && (_M_p <= 1.0));
 
 4237     operator==(
const param_type& __p1, 
const param_type& __p2)
 
 4238     { 
return __p1._M_k == __p2._M_k && __p1._M_p == __p2._M_p; }
 
 4247       : _M_param(__k, __p), _M_gd(__k, (1.0 - __p) / __p)
 
 4252       : _M_param(__p), _M_gd(__p.
k(), (1.0 - __p.
p()) / __p.
p())
 
 4267       { 
return _M_param.k(); }
 
 4274       { 
return _M_param.p(); }
 
 4281       { 
return _M_param; }
 
 4289       { _M_param = __param; }
 
 4308       template<
typename _UniformRandomNumberGenerator>
 
 4310         operator()(_UniformRandomNumberGenerator& __urng);
 
 4312       template<
typename _UniformRandomNumberGenerator>
 
 4314     operator()(_UniformRandomNumberGenerator& __urng,
 
 4315            const param_type& __p);
 
 4317       template<
typename _ForwardIterator,
 
 4318            typename _UniformRandomNumberGenerator>
 
 4320     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 4321            _UniformRandomNumberGenerator& __urng)
 
 4322     { this->__generate_impl(__f, __t, __urng); }
 
 4324       template<
typename _ForwardIterator,
 
 4325            typename _UniformRandomNumberGenerator>
 
 4327     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 4328            _UniformRandomNumberGenerator& __urng,
 
 4329            const param_type& __p)
 
 4330     { this->__generate_impl(__f, __t, __urng, __p); }
 
 4332       template<
typename _UniformRandomNumberGenerator>
 
 4335            _UniformRandomNumberGenerator& __urng)
 
 4336     { this->__generate_impl(__f, __t, __urng); }
 
 4338       template<
typename _UniformRandomNumberGenerator>
 
 4341            _UniformRandomNumberGenerator& __urng,
 
 4342            const param_type& __p)
 
 4343     { this->__generate_impl(__f, __t, __urng, __p); }
 
 4353       { 
return __d1._M_param == __d2._M_param && __d1._M_gd == __d2._M_gd; }
 
 4366       template<
typename _IntType1, 
typename _CharT, 
typename _Traits>
 
 4368     operator<<(std::basic_ostream<_CharT, _Traits>& __os,
 
 4381       template<
typename _IntType1, 
typename _CharT, 
typename _Traits>
 
 4387       template<
typename _ForwardIterator,
 
 4388            typename _UniformRandomNumberGenerator>
 
 4390     __generate_impl(_ForwardIterator __f, _ForwardIterator __t,
 
 4391             _UniformRandomNumberGenerator& __urng);
 
 4392       template<
typename _ForwardIterator,
 
 4393            typename _UniformRandomNumberGenerator>
 
 4395     __generate_impl(_ForwardIterator __f, _ForwardIterator __t,
 
 4396             _UniformRandomNumberGenerator& __urng,
 
 4397             const param_type& __p);
 
 4399       param_type _M_param;
 
 4407   template<
typename _IntType>
 
 4411     { 
return !(__d1 == __d2); }
 
 4429   template<
typename _IntType = 
int>
 
 4433             "template argument not an integral type");
 
 4445     param_type(
double __mean = 1.0)
 
 4448       _GLIBCXX_DEBUG_ASSERT(_M_mean > 0.0);
 
 4457     operator==(
const param_type& __p1, 
const param_type& __p2)
 
 4458     { 
return __p1._M_mean == __p2._M_mean; }
 
 4468 #if _GLIBCXX_USE_C99_MATH_TR1 
 4469     double _M_lfm, _M_sm, _M_d, _M_scx, _M_1cx, _M_c2b, _M_cb;
 
 4476       : _M_param(__mean), _M_nd()
 
 4481       : _M_param(__p), _M_nd()
 
 4496       { 
return _M_param.mean(); }
 
 4503       { 
return _M_param; }
 
 4511       { _M_param = __param; }
 
 4530       template<
typename _UniformRandomNumberGenerator>
 
 4533     { 
return this->
operator()(__urng, _M_param); }
 
 4535       template<
typename _UniformRandomNumberGenerator>
 
 4537     operator()(_UniformRandomNumberGenerator& __urng,
 
 4538            const param_type& __p);
 
 4540       template<
typename _ForwardIterator,
 
 4541            typename _UniformRandomNumberGenerator>
 
 4543     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 4544            _UniformRandomNumberGenerator& __urng)
 
 4545     { this->__generate(__f, __t, __urng, _M_param); }
 
 4547       template<
typename _ForwardIterator,
 
 4548            typename _UniformRandomNumberGenerator>
 
 4550     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 4551            _UniformRandomNumberGenerator& __urng,
 
 4552            const param_type& __p)
 
 4553     { this->__generate_impl(__f, __t, __urng, __p); }
 
 4555       template<
typename _UniformRandomNumberGenerator>
 
 4558            _UniformRandomNumberGenerator& __urng,
 
 4559            const param_type& __p)
 
 4560     { this->__generate_impl(__f, __t, __urng, __p); }
 
 4570 #ifdef _GLIBCXX_USE_C99_MATH_TR1 
 4571       { 
return __d1._M_param == __d2._M_param && __d1._M_nd == __d2._M_nd; }
 
 4573       { 
return __d1._M_param == __d2._M_param; }
 
 4586       template<
typename _IntType1, 
typename _CharT, 
typename _Traits>
 
 4588     operator<<(std::basic_ostream<_CharT, _Traits>& __os,
 
 4601       template<
typename _IntType1, 
typename _CharT, 
typename _Traits>
 
 4607       template<
typename _ForwardIterator,
 
 4608            typename _UniformRandomNumberGenerator>
 
 4610     __generate_impl(_ForwardIterator __f, _ForwardIterator __t,
 
 4611             _UniformRandomNumberGenerator& __urng,
 
 4612             const param_type& __p);
 
 4614       param_type _M_param;
 
 4623   template<
typename _IntType>
 
 4627     { 
return !(__d1 == __d2); }
 
 4645   template<
typename _RealType = 
double>
 
 4649             "template argument not a floating point type");
 
 4660     param_type(_RealType __lambda = _RealType(1))
 
 4661     : _M_lambda(__lambda)
 
 4663       _GLIBCXX_DEBUG_ASSERT(_M_lambda > _RealType(0));
 
 4668     { 
return _M_lambda; }
 
 4671     operator==(
const param_type& __p1, 
const param_type& __p2)
 
 4672     { 
return __p1._M_lambda == __p2._M_lambda; }
 
 4675     _RealType _M_lambda;
 
 4685       : _M_param(__lambda)
 
 4706       { 
return _M_param.lambda(); }
 
 4713       { 
return _M_param; }
 
 4721       { _M_param = __param; }
 
 4740       template<
typename _UniformRandomNumberGenerator>
 
 4743         { 
return this->
operator()(__urng, _M_param); }
 
 4745       template<
typename _UniformRandomNumberGenerator>
 
 4747     operator()(_UniformRandomNumberGenerator& __urng,
 
 4748            const param_type& __p)
 
 4750       __detail::_Adaptor<_UniformRandomNumberGenerator, result_type>
 
 4755       template<
typename _ForwardIterator,
 
 4756            typename _UniformRandomNumberGenerator>
 
 4758     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 4759            _UniformRandomNumberGenerator& __urng)
 
 4760     { this->__generate(__f, __t, __urng, _M_param); }
 
 4762       template<
typename _ForwardIterator,
 
 4763            typename _UniformRandomNumberGenerator>
 
 4765     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 4766            _UniformRandomNumberGenerator& __urng,
 
 4767            const param_type& __p)
 
 4768     { this->__generate_impl(__f, __t, __urng, __p); }
 
 4770       template<
typename _UniformRandomNumberGenerator>
 
 4773            _UniformRandomNumberGenerator& __urng,
 
 4774            const param_type& __p)
 
 4775     { this->__generate_impl(__f, __t, __urng, __p); }
 
 4784       { 
return __d1._M_param == __d2._M_param; }
 
 4787       template<
typename _ForwardIterator,
 
 4788            typename _UniformRandomNumberGenerator>
 
 4790     __generate_impl(_ForwardIterator __f, _ForwardIterator __t,
 
 4791             _UniformRandomNumberGenerator& __urng,
 
 4792             const param_type& __p);
 
 4794       param_type _M_param;
 
 4801   template<
typename _RealType>
 
 4805     { 
return !(__d1 == __d2); }
 
 4817   template<
typename _RealType, 
typename _CharT, 
typename _Traits>
 
 4819     operator<<(std::basic_ostream<_CharT, _Traits>& __os,
 
 4832   template<
typename _RealType, 
typename _CharT, 
typename _Traits>
 
 4847   template<
typename _RealType = 
double>
 
 4851             "template argument not a floating point type");
 
 4862     param_type(_RealType __a = _RealType(1),
 
 4863            _RealType __b = _RealType(1))
 
 4864     : _M_a(__a), _M_b(__b)
 
 4876     operator==(
const param_type& __p1, 
const param_type& __p2)
 
 4877     { 
return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; }
 
 4886                _RealType __b = _RealType(1))
 
 4887       : _M_param(__a, __b)
 
 4907       { 
return _M_param.a(); }
 
 4914       { 
return _M_param.b(); }
 
 4921       { 
return _M_param; }
 
 4929       { _M_param = __param; }
 
 4948       template<
typename _UniformRandomNumberGenerator>
 
 4951     { 
return this->
operator()(__urng, _M_param); }
 
 4953       template<
typename _UniformRandomNumberGenerator>
 
 4955     operator()(_UniformRandomNumberGenerator& __urng,
 
 4956            const param_type& __p);
 
 4958       template<
typename _ForwardIterator,
 
 4959            typename _UniformRandomNumberGenerator>
 
 4961     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 4962            _UniformRandomNumberGenerator& __urng)
 
 4963     { this->__generate(__f, __t, __urng, _M_param); }
 
 4965       template<
typename _ForwardIterator,
 
 4966            typename _UniformRandomNumberGenerator>
 
 4968     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 4969            _UniformRandomNumberGenerator& __urng,
 
 4970            const param_type& __p)
 
 4971     { this->__generate_impl(__f, __t, __urng, __p); }
 
 4973       template<
typename _UniformRandomNumberGenerator>
 
 4976            _UniformRandomNumberGenerator& __urng,
 
 4977            const param_type& __p)
 
 4978     { this->__generate_impl(__f, __t, __urng, __p); }
 
 4987       { 
return __d1._M_param == __d2._M_param; }
 
 4990       template<
typename _ForwardIterator,
 
 4991            typename _UniformRandomNumberGenerator>
 
 4993     __generate_impl(_ForwardIterator __f, _ForwardIterator __t,
 
 4994             _UniformRandomNumberGenerator& __urng,
 
 4995             const param_type& __p);
 
 4997       param_type _M_param;
 
 5004   template<
typename _RealType>
 
 5008     { 
return !(__d1 == __d2); }
 
 5020   template<
typename _RealType, 
typename _CharT, 
typename _Traits>
 
 5022     operator<<(std::basic_ostream<_CharT, _Traits>& __os,
 
 5035   template<
typename _RealType, 
typename _CharT, 
typename _Traits>
 
 5050   template<
typename _RealType = 
double>
 
 5054             "template argument not a floating point type");
 
 5065     param_type(_RealType __a = _RealType(0),
 
 5066            _RealType __b = _RealType(1))
 
 5067     : _M_a(__a), _M_b(__b)
 
 5079     operator==(
const param_type& __p1, 
const param_type& __p2)
 
 5080     { 
return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; }
 
 5089                  _RealType __b = _RealType(1))
 
 5090       : _M_param(__a, __b)
 
 5110       { 
return _M_param.a(); }
 
 5117       { 
return _M_param.b(); }
 
 5124       { 
return _M_param; }
 
 5132       { _M_param = __param; }
 
 5151       template<
typename _UniformRandomNumberGenerator>
 
 5154     { 
return this->
operator()(__urng, _M_param); }
 
 5156       template<
typename _UniformRandomNumberGenerator>
 
 5158     operator()(_UniformRandomNumberGenerator& __urng,
 
 5159            const param_type& __p);
 
 5161       template<
typename _ForwardIterator,
 
 5162            typename _UniformRandomNumberGenerator>
 
 5164     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 5165            _UniformRandomNumberGenerator& __urng)
 
 5166     { this->__generate(__f, __t, __urng, _M_param); }
 
 5168       template<
typename _ForwardIterator,
 
 5169            typename _UniformRandomNumberGenerator>
 
 5171     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 5172            _UniformRandomNumberGenerator& __urng,
 
 5173            const param_type& __p)
 
 5174     { this->__generate_impl(__f, __t, __urng, __p); }
 
 5176       template<
typename _UniformRandomNumberGenerator>
 
 5179            _UniformRandomNumberGenerator& __urng,
 
 5180            const param_type& __p)
 
 5181     { this->__generate_impl(__f, __t, __urng, __p); }
 
 5190       { 
return __d1._M_param == __d2._M_param; }
 
 5193       template<
typename _ForwardIterator,
 
 5194            typename _UniformRandomNumberGenerator>
 
 5196     __generate_impl(_ForwardIterator __f, _ForwardIterator __t,
 
 5197             _UniformRandomNumberGenerator& __urng,
 
 5198             const param_type& __p);
 
 5200       param_type _M_param;
 
 5207   template<
typename _RealType>
 
 5211     { 
return !(__d1 == __d2); }
 
 5223   template<
typename _RealType, 
typename _CharT, 
typename _Traits>
 
 5225     operator<<(std::basic_ostream<_CharT, _Traits>& __os,
 
 5238   template<
typename _RealType, 
typename _CharT, 
typename _Traits>
 
 5250   template<
typename _IntType = 
int>
 
 5254             "template argument not an integral type");
 
 5266     : _M_prob(), _M_cp()
 
 5269     template<
typename _InputIterator>
 
 5270       param_type(_InputIterator __wbegin,
 
 5271              _InputIterator __wend)
 
 5272       : _M_prob(__wbegin, __wend), _M_cp()
 
 5273       { _M_initialize(); }
 
 5276     : _M_prob(__wil.begin(), __wil.end()), _M_cp()
 
 5277     { _M_initialize(); }
 
 5279     template<
typename _Func>
 
 5280       param_type(
size_t __nw, 
double __xmin, 
double __xmax,
 
 5284     param_type(
const param_type&) = 
default;
 
 5285     param_type& operator=(
const param_type&) = 
default;
 
 5288     probabilities()
 const 
 5292     operator==(
const param_type& __p1, 
const param_type& __p2)
 
 5293     { 
return __p1._M_prob == __p2._M_prob; }
 
 5307       template<
typename _InputIterator>
 
 5309                   _InputIterator __wend)
 
 5310     : _M_param(__wbegin, __wend)
 
 5313       discrete_distribution(initializer_list<double> __wl)
 
 5317       template<
typename _Func>
 
 5318     discrete_distribution(
size_t __nw, 
double __xmin, 
double __xmax,
 
 5320     : _M_param(__nw, __xmin, __xmax, __fw)
 
 5324       discrete_distribution(
const param_type& __p)
 
 5341     return _M_param._M_prob.
empty()
 
 5350       { 
return _M_param; }
 
 5358       { _M_param = __param; }
 
 5373     return _M_param._M_prob.
empty()
 
 5380       template<
typename _UniformRandomNumberGenerator>
 
 5383     { 
return this->
operator()(__urng, _M_param); }
 
 5385       template<
typename _UniformRandomNumberGenerator>
 
 5387     operator()(_UniformRandomNumberGenerator& __urng,
 
 5388            const param_type& __p);
 
 5390       template<
typename _ForwardIterator,
 
 5391            typename _UniformRandomNumberGenerator>
 
 5393     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 5394            _UniformRandomNumberGenerator& __urng)
 
 5395     { this->__generate(__f, __t, __urng, _M_param); }
 
 5397       template<
typename _ForwardIterator,
 
 5398            typename _UniformRandomNumberGenerator>
 
 5400     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 5401            _UniformRandomNumberGenerator& __urng,
 
 5402            const param_type& __p)
 
 5403     { this->__generate_impl(__f, __t, __urng, __p); }
 
 5405       template<
typename _UniformRandomNumberGenerator>
 
 5408            _UniformRandomNumberGenerator& __urng,
 
 5409            const param_type& __p)
 
 5410     { this->__generate_impl(__f, __t, __urng, __p); }
 
 5419       { 
return __d1._M_param == __d2._M_param; }
 
 5431       template<
typename _IntType1, 
typename _CharT, 
typename _Traits>
 
 5433     operator<<(std::basic_ostream<_CharT, _Traits>& __os,
 
 5447       template<
typename _IntType1, 
typename _CharT, 
typename _Traits>
 
 5453       template<
typename _ForwardIterator,
 
 5454            typename _UniformRandomNumberGenerator>
 
 5456     __generate_impl(_ForwardIterator __f, _ForwardIterator __t,
 
 5457             _UniformRandomNumberGenerator& __urng,
 
 5458             const param_type& __p);
 
 5460       param_type _M_param;
 
 5467   template<
typename _IntType>
 
 5471     { 
return !(__d1 == __d2); }
 
 5480   template<
typename _RealType = 
double>
 
 5484             "template argument not a floating point type");
 
 5496     : _M_int(), _M_den(), _M_cp()
 
 5499     template<
typename _InputIteratorB, 
typename _InputIteratorW>
 
 5500       param_type(_InputIteratorB __bfirst,
 
 5501              _InputIteratorB __bend,
 
 5502              _InputIteratorW __wbegin);
 
 5504     template<
typename _Func>
 
 5507     template<
typename _Func>
 
 5508       param_type(
size_t __nw, _RealType __xmin, _RealType __xmax,
 
 5512     param_type(
const param_type&) = 
default;
 
 5513     param_type& operator=(
const param_type&) = 
default;
 
 5521           __tmp[1] = _RealType(1);
 
 5533     operator==(
const param_type& __p1, 
const param_type& __p2)
 
 5534     { 
return __p1._M_int == __p2._M_int && __p1._M_den == __p2._M_den; }
 
 5550       template<
typename _InputIteratorB, 
typename _InputIteratorW>
 
 5552                     _InputIteratorB __bend,
 
 5553                     _InputIteratorW __wbegin)
 
 5554     : _M_param(__bfirst, __bend, __wbegin)
 
 5557       template<
typename _Func>
 
 5558     piecewise_constant_distribution(initializer_list<_RealType> __bl,
 
 5560     : _M_param(__bl, __fw)
 
 5563       template<
typename _Func>
 
 5564     piecewise_constant_distribution(
size_t __nw,
 
 5565                     _RealType __xmin, _RealType __xmax,
 
 5567     : _M_param(__nw, __xmin, __xmax, __fw)
 
 5571       piecewise_constant_distribution(
const param_type& __p)
 
 5588     if (_M_param._M_int.
empty())
 
 5591         __tmp[1] = _RealType(1);
 
 5595       return _M_param._M_int;
 
 5604     return _M_param._M_den.
empty()
 
 5613       { 
return _M_param; }
 
 5621       { _M_param = __param; }
 
 5629     return _M_param._M_int.
empty()
 
 5639     return _M_param._M_int.
empty()
 
 5646       template<
typename _UniformRandomNumberGenerator>
 
 5649     { 
return this->
operator()(__urng, _M_param); }
 
 5651       template<
typename _UniformRandomNumberGenerator>
 
 5653     operator()(_UniformRandomNumberGenerator& __urng,
 
 5654            const param_type& __p);
 
 5656       template<
typename _ForwardIterator,
 
 5657            typename _UniformRandomNumberGenerator>
 
 5659     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 5660            _UniformRandomNumberGenerator& __urng)
 
 5661     { this->__generate(__f, __t, __urng, _M_param); }
 
 5663       template<
typename _ForwardIterator,
 
 5664            typename _UniformRandomNumberGenerator>
 
 5666     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 5667            _UniformRandomNumberGenerator& __urng,
 
 5668            const param_type& __p)
 
 5669     { this->__generate_impl(__f, __t, __urng, __p); }
 
 5671       template<
typename _UniformRandomNumberGenerator>
 
 5674            _UniformRandomNumberGenerator& __urng,
 
 5675            const param_type& __p)
 
 5676     { this->__generate_impl(__f, __t, __urng, __p); }
 
 5685       { 
return __d1._M_param == __d2._M_param; }
 
 5698       template<
typename _RealType1, 
typename _CharT, 
typename _Traits>
 
 5700     operator<<(std::basic_ostream<_CharT, _Traits>& __os,
 
 5714       template<
typename _RealType1, 
typename _CharT, 
typename _Traits>
 
 5720       template<
typename _ForwardIterator,
 
 5721            typename _UniformRandomNumberGenerator>
 
 5723     __generate_impl(_ForwardIterator __f, _ForwardIterator __t,
 
 5724             _UniformRandomNumberGenerator& __urng,
 
 5725             const param_type& __p);
 
 5727       param_type _M_param;
 
 5734   template<
typename _RealType>
 
 5738     { 
return !(__d1 == __d2); }
 
 5747   template<
typename _RealType = 
double>
 
 5751             "template argument not a floating point type");
 
 5763     : _M_int(), _M_den(), _M_cp(), _M_m()
 
 5766     template<
typename _InputIteratorB, 
typename _InputIteratorW>
 
 5767       param_type(_InputIteratorB __bfirst,
 
 5768              _InputIteratorB __bend,
 
 5769              _InputIteratorW __wbegin);
 
 5771     template<
typename _Func>
 
 5774     template<
typename _Func>
 
 5775       param_type(
size_t __nw, _RealType __xmin, _RealType __xmax,
 
 5779     param_type(
const param_type&) = 
default;
 
 5780     param_type& operator=(
const param_type&) = 
default;
 
 5788           __tmp[1] = _RealType(1);
 
 5800     operator==(
const param_type& __p1, 
const param_type& __p2)
 
 5801     { 
return (__p1._M_int == __p2._M_int
 
 5802           && __p1._M_den == __p2._M_den); }
 
 5819       template<
typename _InputIteratorB, 
typename _InputIteratorW>
 
 5821                       _InputIteratorB __bend,
 
 5822                       _InputIteratorW __wbegin)
 
 5823     : _M_param(__bfirst, __bend, __wbegin)
 
 5826       template<
typename _Func>
 
 5827     piecewise_linear_distribution(initializer_list<_RealType> __bl,
 
 5829     : _M_param(__bl, __fw)
 
 5832       template<
typename _Func>
 
 5833     piecewise_linear_distribution(
size_t __nw,
 
 5834                       _RealType __xmin, _RealType __xmax,
 
 5836     : _M_param(__nw, __xmin, __xmax, __fw)
 
 5840       piecewise_linear_distribution(
const param_type& __p)
 
 5857     if (_M_param._M_int.
empty())
 
 5860         __tmp[1] = _RealType(1);
 
 5864       return _M_param._M_int;
 
 5874     return _M_param._M_den.
empty()
 
 5883       { 
return _M_param; }
 
 5891       { _M_param = __param; }
 
 5899     return _M_param._M_int.
empty()
 
 5909     return _M_param._M_int.
empty()
 
 5916       template<
typename _UniformRandomNumberGenerator>
 
 5919     { 
return this->
operator()(__urng, _M_param); }
 
 5921       template<
typename _UniformRandomNumberGenerator>
 
 5923     operator()(_UniformRandomNumberGenerator& __urng,
 
 5924            const param_type& __p);
 
 5926       template<
typename _ForwardIterator,
 
 5927            typename _UniformRandomNumberGenerator>
 
 5929     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 5930            _UniformRandomNumberGenerator& __urng)
 
 5931     { this->__generate(__f, __t, __urng, _M_param); }
 
 5933       template<
typename _ForwardIterator,
 
 5934            typename _UniformRandomNumberGenerator>
 
 5936     __generate(_ForwardIterator __f, _ForwardIterator __t,
 
 5937            _UniformRandomNumberGenerator& __urng,
 
 5938            const param_type& __p)
 
 5939     { this->__generate_impl(__f, __t, __urng, __p); }
 
 5941       template<
typename _UniformRandomNumberGenerator>
 
 5944            _UniformRandomNumberGenerator& __urng,
 
 5945            const param_type& __p)
 
 5946     { this->__generate_impl(__f, __t, __urng, __p); }
 
 5955       { 
return __d1._M_param == __d2._M_param; }
 
 5968       template<
typename _RealType1, 
typename _CharT, 
typename _Traits>
 
 5970     operator<<(std::basic_ostream<_CharT, _Traits>& __os,
 
 5984       template<
typename _RealType1, 
typename _CharT, 
typename _Traits>
 
 5990       template<
typename _ForwardIterator,
 
 5991            typename _UniformRandomNumberGenerator>
 
 5993     __generate_impl(_ForwardIterator __f, _ForwardIterator __t,
 
 5994             _UniformRandomNumberGenerator& __urng,
 
 5995             const param_type& __p);
 
 5997       param_type _M_param;
 
 6004   template<
typename _RealType>
 
 6008     { 
return !(__d1 == __d2); }
 
 6037     template<
typename _IntType>
 
 6040     template<
typename _InputIterator>
 
 6041       seed_seq(_InputIterator __begin, _InputIterator __end);
 
 6044     template<
typename _RandomAccessIterator>
 
 6046       generate(_RandomAccessIterator __begin, _RandomAccessIterator __end);
 
 6050     { 
return _M_v.
size(); }
 
 6052     template<
typename OutputIterator>
 
 6054       param(OutputIterator __dest)
 const 
 6055       { std::copy(_M_v.
begin(), _M_v.
end(), __dest); }
 
 6066 _GLIBCXX_END_NAMESPACE_VERSION
 
result_type operator()(_UniformRandomNumberGenerator &__urng)
Generating functions. 
 
param_type param() const 
Returns the parameter set of the distribution. 
 
result_type max() const 
Returns the least upper bound value of the distribution. 
 
friend std::basic_istream< _CharT, _Traits > & operator>>(std::basic_istream< _CharT, _Traits > &__is, std::negative_binomial_distribution< _IntType1 > &__x)
Extracts a negative_binomial_distribution random number distribution __x from the input stream __is...
 
friend bool operator==(const poisson_distribution &__d1, const poisson_distribution &__d2)
Return true if two Poisson distributions have the same parameters and the sequences that would be gen...
 
linear_congruential_engine(_Sseq &__q)
Constructs a linear_congruential_engine random number generator engine seeded from the seed sequence ...
 
result_type operator()(_UniformRandomNumberGenerator &__urng)
Generating functions. 
 
void reset()
Resets the distribution state. 
 
param_type param() const 
Returns the parameter set of the distribution. 
 
friend std::basic_istream< _CharT, _Traits > & operator>>(std::basic_istream< _CharT, _Traits > &__is, std::fisher_f_distribution< _RealType1 > &__x)
Extracts a fisher_f_distribution random number distribution __x from the input stream __is...
 
friend bool operator==(const independent_bits_engine &__lhs, const independent_bits_engine &__rhs)
Compares two independent_bits_engine random number generator objects of the same type for equality...
 
param_type param() const 
Returns the parameter set of the distribution. 
 
result_type min() const 
Returns the greatest lower bound value of the distribution. 
 
param_type param() const 
Returns the parameter set of the distribution. 
 
void param(const param_type &__param)
Sets the parameter set of the distribution. 
 
friend bool operator==(const exponential_distribution &__d1, const exponential_distribution &__d2)
Return true if two exponential distributions have the same parameters. 
 
friend std::basic_istream< _CharT, _Traits > & operator>>(std::basic_istream< _CharT, _Traits > &__is, std::discrete_distribution< _IntType1 > &__x)
Extracts a discrete_distribution random number distribution __x from the input stream __is...
 
void param(const param_type &__param)
Sets the parameter set of the distribution. 
 
A discrete geometric random number distribution. 
 
void param(const param_type &__param)
Sets the parameter set of the distribution. 
 
void param(const param_type &__param)
Sets the parameter set of the distribution. 
 
void param(const param_type &__param)
Sets the parameter set of the distribution. 
 
param_type param() const 
Returns the parameter set of the distribution. 
 
uint_least32_t result_type
 
friend bool operator==(const binomial_distribution &__d1, const binomial_distribution &__d2)
Return true if two binomial distributions have the same parameters and the sequences that would be ge...
 
void reset()
Resets the distribution state. 
 
result_type max() const 
Returns the least upper bound value of the distribution. 
 
A weibull_distribution random number distribution. 
 
void reset()
Resets the distribution state. 
 
param_type param() const 
Returns the parameter set of the distribution. 
 
void reset()
Resets the distribution state. 
 
double p() const 
Returns the distribution parameter p. 
 
result_type max() const 
Returns the least upper bound value of the distribution. 
 
_IntType t() const 
Returns the distribution t parameter. 
 
result_type min() const 
Returns the greatest lower bound value of the distribution. 
 
friend std::basic_istream< _CharT, _Traits > & operator>>(std::basic_istream< _CharT, _Traits > &__is, std::linear_congruential_engine< _UIntType1, __a1, __c1, __m1 > &__lcr)
Sets the state of the engine by reading its textual representation from __is. 
 
reference back() noexcept
 
static constexpr result_type max()
Gets the maximum value in the generated random number range. 
 
static constexpr result_type max()
Gets the maximum value in the generated random number range. 
 
result_type operator()(_UniformRandomNumberGenerator &__urng)
Generating functions. 
 
result_type min() const 
Returns the greatest lower bound value of the distribution. 
 
result_type min() const 
Returns the greatest lower bound value of the distribution. 
 
friend bool operator==(const extreme_value_distribution &__d1, const extreme_value_distribution &__d2)
Return true if two extreme value distributions have the same parameters. 
 
Produces random numbers by combining random numbers from some base engine to produce random numbers w...
 
_RandomNumberEngine::result_type result_type
 
result_type max() const 
Returns the least upper bound value of the distribution. 
 
param_type param() const 
Returns the parameter set of the distribution. 
 
complex< _Tp > exp(const complex< _Tp > &)
Return complex base e exponential of z. 
 
void seed(_Sseq &__q)
Reseeds the discard_block_engine object with the given seed sequence. 
 
void reset()
Resets the distribution state. 
 
result_type operator()(_UniformRandomNumberGenerator &__urng)
Generating functions. 
 
result_type operator()(_UniformRandomNumberGenerator &__urng)
Generating functions. 
 
double p() const 
Return the  parameter of the distribution. 
 
A fisher_f_distribution random number distribution. 
 
result_type max() const 
Returns the least upper bound value of the distribution. 
 
A piecewise_linear_distribution random number distribution. 
 
_RealType a() const 
Return the  parameter of the distribution. 
 
discard_block_engine(_Sseq &__q)
Generator construct a discard_block_engine engine. 
 
void param(const param_type &__param)
Sets the parameter set of the distribution. 
 
friend bool operator==(const uniform_int_distribution &__d1, const uniform_int_distribution &__d2)
Return true if two uniform integer distributions have the same parameters. 
 
static constexpr result_type max()
 
friend bool operator==(const uniform_real_distribution &__d1, const uniform_real_distribution &__d2)
Return true if two uniform real distributions have the same parameters. 
 
A Bernoulli random number distribution. 
 
friend std::basic_istream< _CharT, _Traits > & operator>>(std::basic_istream< _CharT, _Traits > &__is, std::poisson_distribution< _IntType1 > &__x)
Extracts a poisson_distribution random number distribution __x from the input stream __is...
 
result_type min() const 
Returns the greatest lower bound value of the distribution. 
 
result_type min() const 
Returns the greatest lower bound value of the distribution. 
 
result_type operator()(_UniformRandomNumberGenerator &__urng)
Generating functions. 
 
double p() const 
Returns the distribution p parameter. 
 
void param(const param_type &__param)
Sets the parameter set of the distribution. 
 
Template class basic_istream. 
 
friend bool operator==(const student_t_distribution &__d1, const student_t_distribution &__d2)
Return true if two Student t distributions have the same parameters and the sequences that would be g...
 
complex< _Tp > sqrt(const complex< _Tp > &)
Return complex square root of z. 
 
bitset< _Nb > & reset() noexcept
Sets every bit to false. 
 
friend bool operator==(const piecewise_constant_distribution &__d1, const piecewise_constant_distribution &__d2)
Return true if two piecewise constant distributions have the same parameters. 
 
result_type min() const 
Returns the greatest lower bound value of the distribution. 
 
friend std::basic_istream< _CharT, _Traits > & operator>>(std::basic_istream< _CharT, _Traits > &__is, std::shuffle_order_engine< _RandomNumberEngine1, __k1 > &__x)
Extracts the current state of a % subtract_with_carry_engine random number generator engine __x from ...
 
result_type max() const 
Returns the least upper bound value of the distribution. 
 
void reset()
Resets the distribution state. 
 
void param(const param_type &__param)
Sets the parameter set of the distribution. 
 
result_type operator()(_UniformRandomNumberGenerator &__urng)
Generating functions. 
 
result_type max() const 
Returns the least upper bound value of the distribution. 
 
friend std::basic_istream< _CharT, _Traits > & operator>>(std::basic_istream< _CharT, _Traits > &__is, std::mersenne_twister_engine< _UIntType1, __w1, __n1, __m1, __r1, __a1, __u1, __d1, __s1, __b1, __t1, __c1, __l1, __f1 > &__x)
Extracts the current state of a % mersenne_twister_engine random number generator engine __x from the...
 
param_type param() const 
Returns the parameter set of the distribution. 
 
static constexpr result_type min()
Gets the minimum value in the generated random number range. 
 
result_type max() const 
Returns the least upper bound value of the distribution. 
 
param_type param() const 
Returns the parameter set of the distribution. 
 
Properties of fundamental types. 
 
void param(const param_type &__param)
Sets the parameter set of the distribution. 
 
discard_block_engine()
Constructs a default discard_block_engine engine. 
 
independent_bits_engine()
Constructs a default independent_bits_engine engine. 
 
void param(const param_type &__param)
Sets the parameter set of the distribution. 
 
void param(const param_type &__param)
Sets the parameter set of the distribution. 
 
result_type operator()(_UniformRandomNumberGenerator &__urng)
Generating functions. 
 
result_type max() const 
Returns the least upper bound value of the distribution. 
 
A cauchy_distribution random number distribution. 
 
_RealType stddev() const 
Returns the standard deviation of the distribution. 
 
uniform_real_distribution(_RealType __a=_RealType(0), _RealType __b=_RealType(1))
Constructs a uniform_real_distribution object. 
 
result_type max() const 
Returns the least upper bound value of the distribution. 
 
constexpr int __lg(int __n)
This is a helper function for the sort routines and for random.tcc. 
 
A student_t_distribution random number distribution. 
 
independent_bits_engine(_RandomNumberEngine &&__rng)
Move constructs a independent_bits_engine engine. 
 
reference front() noexcept
 
A discrete binomial random number distribution. 
 
shuffle_order_engine(_RandomNumberEngine &&__rng)
Move constructs a shuffle_order_engine engine. 
 
param_type param() const 
Returns the parameter set of the distribution. 
 
void param(const param_type &__param)
Sets the parameter set of the distribution. 
 
result_type max() const 
Returns the inclusive upper bound of the distribution range. 
 
static constexpr result_type increment
 
result_type min() const 
Returns the greatest lower bound value of the distribution. 
 
A extreme_value_distribution random number distribution. 
 
result_type min() const 
Returns the greatest lower bound value of the distribution. 
 
size_type size() const noexcept
 
void reset()
Resets the distribution state. 
 
friend std::basic_istream< _CharT, _Traits > & operator>>(std::basic_istream< _CharT, _Traits > &__is, std::chi_squared_distribution< _RealType1 > &__x)
Extracts a chi_squared_distribution random number distribution __x from the input stream __is...
 
void seed(_Sseq &__q)
Reseeds the independent_bits_engine object with the given seed sequence. 
 
A discrete_distribution random number distribution. 
 
friend bool operator==(const cauchy_distribution &__d1, const cauchy_distribution &__d2)
Return true if two Cauchy distributions have the same parameters. 
 
result_type min() const 
Returns the greatest lower bound value of the distribution. 
 
static constexpr result_type max()
Gets the largest possible value in the output range. 
 
param_type param() const 
Returns the parameter set of the distribution. 
 
void reset()
Resets the distribution state. 
 
result_type min() const 
Returns the greatest lower bound value of the distribution. 
 
result_type operator()(_UniformRandomNumberGenerator &__urng)
Generating functions. 
 
independent_bits_engine(result_type __s)
Seed constructs a independent_bits_engine engine. 
 
static constexpr _Tp max() noexcept
 
result_type operator()(_UniformRandomNumberGenerator &__urng)
Generating functions. 
 
result_type min() const 
Returns the inclusive lower bound of the distribution range. 
 
friend bool operator==(const negative_binomial_distribution &__d1, const negative_binomial_distribution &__d2)
Return true if two negative binomial distributions have the same parameters and the sequences that wo...
 
shuffle_order_engine(const _RandomNumberEngine &__rng)
Copy constructs a shuffle_order_engine engine. 
 
std::vector< double > probabilities() const 
Returns the probabilities of the distribution. 
 
param_type param() const 
Returns the parameter set of the distribution. 
 
result_type max() const 
Returns the least upper bound value of the distribution. 
 
void param(const param_type &__param)
Sets the parameter set of the distribution. 
 
const _Tp & max(const _Tp &, const _Tp &)
This does what you think it does. 
 
result_type operator()(_UniformRandomNumberGenerator &__urng)
Generating functions. 
 
result_type operator()(_UniformRandomNumberGenerator &__urng)
Generating functions. 
 
void discard(unsigned long long __z)
Discard a sequence of random numbers. 
 
void discard(unsigned long long __z)
Discard a sequence of random numbers. 
 
The seed_seq class generates sequences of seeds for random number generators. 
 
_RealType a() const 
Return the  parameter of the distribution. 
 
_RealType b() const 
Return the  parameter of the distribution. 
 
friend std::basic_istream< _CharT, _Traits > & operator>>(std::basic_istream< _CharT, _Traits > &__is, std::binomial_distribution< _IntType1 > &__x)
Extracts a binomial_distribution random number distribution __x from the input stream __is...
 
iterator begin() noexcept
 
result_type max() const 
Returns the least upper bound value of the distribution. 
 
A discrete Poisson random number distribution. 
 
_RealType beta() const 
Returns the  of the distribution. 
 
friend bool operator==(const bernoulli_distribution &__d1, const bernoulli_distribution &__d2)
Return true if two Bernoulli distributions have the same parameters. 
 
discard_block_engine(_RandomNumberEngine &&__rng)
Move constructs a discard_block_engine engine. 
 
void param(const param_type &__param)
Sets the parameter set of the distribution. 
 
bool equal(_II1 __first1, _II1 __last1, _II2 __first2)
Tests a range for element-wise equality. 
 
linear_congruential_engine(result_type __s=default_seed)
Constructs a linear_congruential_engine random number generator engine with seed __s. The default seed value is 1. 
 
shuffle_order_engine(result_type __s)
Seed constructs a shuffle_order_engine engine. 
 
std::vector< _RealType > intervals() const 
Returns a vector of the intervals. 
 
discard_block_engine(const _RandomNumberEngine &__rng)
Copy constructs a discard_block_engine engine. 
 
_RealType b() const 
Return the  parameter of the distribution. 
 
_RandomNumberEngine::result_type result_type
 
result_type operator()(_UniformRandomNumberGenerator &__urng)
Generating functions. 
 
friend bool operator==(const fisher_f_distribution &__d1, const fisher_f_distribution &__d2)
Return true if two Fisher f distributions have the same parameters and the sequences that would be ge...
 
independent_bits_engine(const _RandomNumberEngine &__rng)
Copy constructs a independent_bits_engine engine. 
 
const _RandomNumberEngine & base() const noexcept
Gets a const reference to the underlying generator engine object. 
 
result_type max() const 
Returns the least upper bound value of the distribution. 
 
friend std::basic_istream< _CharT, _Traits > & operator>>(std::basic_istream< _CharT, _Traits > &__is, std::independent_bits_engine< _RandomNumberEngine, __w, _UIntType > &__x)
Extracts the current state of a % subtract_with_carry_engine random number generator engine __x from ...
 
shuffle_order_engine(_Sseq &__q)
Generator construct a shuffle_order_engine engine. 
 
result_type min() const 
Returns the greatest lower bound value of the distribution. 
 
param_type param() const 
Returns the parameter set of the distribution. 
 
void reset()
Resets the distribution state. 
 
friend std::basic_istream< _CharT, _Traits > & operator>>(std::basic_istream< _CharT, _Traits > &__is, std::normal_distribution< _RealType1 > &__x)
Extracts a normal_distribution random number distribution __x from the input stream __is...
 
const _Tp & min(const _Tp &, const _Tp &)
This does what you think it does. 
 
friend bool operator==(const std::normal_distribution< _RealType1 > &__d1, const std::normal_distribution< _RealType1 > &__d2)
Return true if two normal distributions have the same parameters and the sequences that would be gene...
 
static constexpr result_type max()
Gets the largest possible value in the output range. 
 
friend std::basic_istream< _CharT, _Traits > & operator>>(std::basic_istream< _CharT, _Traits > &__is, std::gamma_distribution< _RealType1 > &__x)
Extracts a gamma_distribution random number distribution __x from the input stream __is...
 
bernoulli_distribution(double __p=0.5)
Constructs a Bernoulli distribution with likelihood p. 
 
result_type operator()()
Gets the next value in the generated random number sequence. 
 
friend std::basic_istream< _CharT, _Traits > & operator>>(std::basic_istream< _CharT, _Traits > &__is, std::piecewise_linear_distribution< _RealType1 > &__x)
Extracts a piecewise_linear_distribution random number distribution __x from the input stream __is...
 
result_type operator()(_UniformRandomNumberGenerator &__urng)
Generating functions. 
 
friend bool operator==(const chi_squared_distribution &__d1, const chi_squared_distribution &__d2)
Return true if two Chi-squared distributions have the same parameters and the sequences that would be...
 
result_type max() const 
Returns the least upper bound value of the distribution. 
 
void reset()
Resets the distribution state. 
 
friend bool operator==(const discrete_distribution &__d1, const discrete_distribution &__d2)
Return true if two discrete distributions have the same parameters. 
 
A chi_squared_distribution random number distribution. 
 
result_type operator()(_UniformRandomNumberGenerator &__urng)
Generating functions. 
 
A normal continuous distribution for random numbers. 
 
normal_distribution(result_type __mean=result_type(0), result_type __stddev=result_type(1))
 
_RealType mean() const 
Returns the mean of the distribution. 
 
static constexpr _Tp lowest() noexcept
 
void param(const param_type &__param)
Sets the parameter set of the distribution. 
 
friend std::basic_istream< _CharT, _Traits > & operator>>(std::basic_istream< _CharT, _Traits > &__is, std::student_t_distribution< _RealType1 > &__x)
Extracts a student_t_distribution random number distribution __x from the input stream __is...
 
param_type param() const 
Returns the parameter set of the distribution. 
 
A lognormal_distribution random number distribution. 
 
void reset()
Resets the distribution state. 
 
void discard(unsigned long long __z)
Discard a sequence of random numbers. 
 
result_type min() const 
Returns the greatest lower bound value of the distribution. 
 
void param(const param_type &__param)
Sets the parameter set of the distribution. 
 
void discard(unsigned long long __z)
Discard a sequence of random numbers. 
 
result_type min() const 
Returns the greatest lower bound value of the distribution. 
 
result_type max() const 
Returns the least upper bound value of the distribution. 
 
mersenne_twister_engine(_Sseq &__q)
Constructs a mersenne_twister_engine random number generator engine seeded from the seed sequence __q...
 
linear_congruential_engine< uint_fast32_t, 48271UL, 0UL, 2147483647UL > minstd_rand
 
static constexpr result_type min()
 
void param(const param_type &__param)
Sets the parameter set of the distribution. 
 
result_type min() const 
Returns the greatest lower bound value of the distribution. 
 
A gamma continuous distribution for random numbers. 
 
friend bool operator==(const piecewise_linear_distribution &__d1, const piecewise_linear_distribution &__d2)
Return true if two piecewise linear distributions have the same parameters. 
 
void seed(result_type __s)
Reseeds the independent_bits_engine object with the default seed for the underlying base class genera...
 
uniform_int_distribution(_IntType __a=0, _IntType __b=std::numeric_limits< _IntType >::max())
Constructs a uniform distribution object. 
 
result_type min() const 
Returns the inclusive lower bound of the distribution range. 
 
result_type operator()(_UniformRandomNumberGenerator &__urng)
Generating functions. 
 
void param(const param_type &__param)
Sets the parameter set of the distribution. 
 
result_type min() const 
Returns the greatest lower bound value of the distribution. 
 
param_type param() const 
Returns the parameter set of the distribution. 
 
static constexpr result_type multiplier
 
friend std::basic_istream< _CharT, _Traits > & operator>>(std::basic_istream< _CharT, _Traits > &__is, std::discard_block_engine< _RandomNumberEngine1, __p1, __r1 > &__x)
Extracts the current state of a % subtract_with_carry_engine random number generator engine __x from ...
 
result_type max() const 
Returns the least upper bound value of the distribution. 
 
result_type operator()(_UniformRandomNumberGenerator &__urng)
Generating functions. 
 
independent_bits_engine(_Sseq &__q)
Generator construct a independent_bits_engine engine. 
 
void seed(_Sseq &__q)
Reseeds the shuffle_order_engine object with the given seed sequence. 
 
friend bool operator==(const discard_block_engine &__lhs, const discard_block_engine &__rhs)
Compares two discard_block_engine random number generator objects of the same type for equality...
 
gamma_distribution(_RealType __alpha_val=_RealType(1), _RealType __beta_val=_RealType(1))
Constructs a gamma distribution with parameters  and . 
 
result_type operator()(_UniformRandomNumberGenerator &__urng)
Generating functions. 
 
discard_block_engine(result_type __s)
Seed constructs a discard_block_engine engine. 
 
_RealType generate_canonical(_UniformRandomNumberGenerator &__g)
A function template for converting the output of a (integral) uniform random number generator to a fl...
 
bitset< _Nb > operator>>(size_t __position) const noexcept
Self-explanatory. 
 
static constexpr result_type min()
Gets the smallest possible value in the output range. 
 
void reset()
Resets the distribution state. 
 
result_type max() const 
Returns the least upper bound value of the distribution. 
 
param_type param() const 
Returns the parameter set of the distribution. 
 
result_type operator()(_UniformRandomNumberGenerator &__urng)
Generating functions. 
 
std::vector< _RealType > intervals() const 
Return the intervals of the distribution. 
 
void seed(result_type __s)
Reseeds the discard_block_engine object with the default seed for the underlying base class generator...
 
void discard(unsigned long long __z)
 
void param(const param_type &__param)
Sets the parameter set of the distribution. 
 
mersenne_twister_engine< uint_fast32_t, 32, 624, 397, 31, 0x9908b0dfUL, 11, 0xffffffffUL, 7, 0x9d2c5680UL, 15, 0xefc60000UL, 18, 1812433253UL > mt19937
 
result_type max() const 
Returns the inclusive upper bound of the distribution range. 
 
void reset()
Resets the distribution state. 
 
void reset()
Resets the distribution state. 
 
result_type max() const 
Returns the least upper bound value of the distribution. 
 
const _RandomNumberEngine & base() const noexcept
 
result_type min() const 
Returns the greatest lower bound value of the distribution. 
 
void reset()
Resets the distribution state. 
 
_RealType alpha() const 
Returns the  of the distribution. 
 
void reset()
Resets the distribution state. 
 
result_type operator()()
Gets the next random number in the sequence. 
 
friend bool operator==(const shuffle_order_engine &__lhs, const shuffle_order_engine &__rhs)
 
std::vector< double > densities() const 
Returns a vector of the probability densities. 
 
param_type param() const 
Returns the parameter set of the distribution. 
 
Uniform continuous distribution for random numbers. 
 
Template class basic_ostream. 
 
A model of a linear congruential random number generator. 
 
static constexpr _Tp min() noexcept
 
double mean() const 
Returns the distribution parameter mean. 
 
friend bool operator==(const lognormal_distribution &__d1, const lognormal_distribution &__d2)
Return true if two lognormal distributions have the same parameters and the sequences that would be g...
 
param_type param() const 
Returns the parameter set of the distribution. 
 
param_type param() const 
Returns the parameter set of the distribution. 
 
Uniform discrete distribution for random numbers. A discrete random distribution on the range  with e...
 
void seed()
Reseeds the independent_bits_engine object with the default seed for the underlying base class genera...
 
friend bool operator==(const weibull_distribution &__d1, const weibull_distribution &__d2)
Return true if two Weibull distributions have the same parameters. 
 
mersenne_twister_engine< uint_fast64_t, 64, 312, 156, 31, 0xb5026f5aa96619e9ULL, 29, 0x5555555555555555ULL, 17, 0x71d67fffeda60000ULL, 37, 0xfff7eee000000000ULL, 43, 6364136223846793005ULL > mt19937_64
 
complex< _Tp > log(const complex< _Tp > &)
Return complex natural logarithm of z. 
 
const _RandomNumberEngine & base() const noexcept
Gets a const reference to the underlying generator engine object. 
 
linear_congruential_engine< uint_fast32_t, 16807UL, 0UL, 2147483647UL > minstd_rand0
 
void seed()
Reseeds the shuffle_order_engine object with the default seed for the underlying base class generator...
 
An exponential continuous distribution for random numbers. 
 
result_type min() const 
Returns the greatest lower bound value of the distribution. 
 
result_type operator()()
Gets the next value in the generated random number sequence. 
 
std::vector< double > densities() const 
Return a vector of the probability densities of the distribution. 
 
A piecewise_constant_distribution random number distribution. 
 
friend bool operator==(const mersenne_twister_engine &__lhs, const mersenne_twister_engine &__rhs)
Compares two % mersenne_twister_engine random number generator objects of the same type for equality...
 
friend std::basic_istream< _CharT, _Traits > & operator>>(std::basic_istream< _CharT, _Traits > &__is, std::piecewise_constant_distribution< _RealType1 > &__x)
Extracts a piecewise_constant_distribution random number distribution __x from the input stream __is...
 
friend bool operator==(const geometric_distribution &__d1, const geometric_distribution &__d2)
Return true if two geometric distributions have the same parameters. 
 
void seed()
Reseeds the discard_block_engine object with the default seed for the underlying base class generator...
 
void reset()
Resets the distribution state. 
 
__gnu_cxx::__promote_2< _Tpx, _Tpy >::__type beta(_Tpx __x, _Tpy __y)
5.2.1.3 Beta functions. 
 
double p() const 
Returns the p parameter of the distribution. 
 
friend bool operator==(const linear_congruential_engine &__lhs, const linear_congruential_engine &__rhs)
Compares two linear congruential random number generator objects of the same type for equality...
 
void seed(result_type __s)
Reseeds the shuffle_order_engine object with the default seed for the underlying base class generator...
 
_IntType k() const 
Return the  parameter of the distribution. 
 
bool empty() const noexcept
 
A negative_binomial_distribution random number distribution. 
 
result_type operator()(_UniformRandomNumberGenerator &__urng)
Generating functions. 
 
void param(const param_type &__param)
Sets the parameter set of the distribution. 
 
friend std::basic_istream< _CharT, _Traits > & operator>>(std::basic_istream< _CharT, _Traits > &__is, std::lognormal_distribution< _RealType1 > &__x)
Extracts a lognormal_distribution random number distribution __x from the input stream __is...
 
static constexpr result_type min()
Gets the smallest possible value in the output range. 
 
static constexpr result_type min()
Gets the minimum value in the generated random number range. 
 
friend bool operator==(const gamma_distribution &__d1, const gamma_distribution &__d2)
Return true if two gamma distributions have the same parameters and the sequences that would be gener...
 
param_type param() const 
Returns the parameter set of the distribution. 
 
void seed(result_type __s=default_seed)
Reseeds the linear_congruential_engine random number generator engine sequence to the seed __s...
 
shuffle_order_engine()
Constructs a default shuffle_order_engine engine. 
 
One of the math functors.