STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | List of all members
mersenne_twister_engine< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx > Class Template Reference
Inheritance diagram for mersenne_twister_engine< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >:
mersenne_twister< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Sx, _Bx, _Tx, _Cx, _Lx > _Circ_buf< _Ty, _Nx >

Public Types

typedef mersenne_twister_engine< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx > _Myt
 
typedef mersenne_twister< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Sx, _Bx, _Tx, _Cx, _Lx > _Mybase
 
typedef _Ty result_type
 
- Public Types inherited from mersenne_twister< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Sx, _Bx, _Tx, _Cx, _Lx >
typedef mersenne_twister< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Sx, _Bx, _Tx, _Cx, _Lx > _Myt
 
typedef _Ty result_type
 

Public Member Functions

 mersenne_twister_engine (result_type _X0=default_seed)
 
template<class _Seed_seq , class = typename _Enable_if_seed_seq<_Seed_seq, _Myt>::type>
 mersenne_twister_engine (_Seed_seq &_Seq)
 
void seed (result_type _X0=default_seed)
 
template<class _Seed_seq , class = typename _Enable_if_seed_seq<_Seed_seq, _Myt>::type>
void seed (_Seed_seq &_Seq)
 
- Public Member Functions inherited from mersenne_twister< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Sx, _Bx, _Tx, _Cx, _Lx >
 mersenne_twister (_Ty _X0=default_seed, _Ty _Dxarg=_WMSK, _Ty _Fxarg=(_Ty) 1812433253)
 
template<class _Gen , class = typename _Enable_if_seed_seq<_Gen, _Myt>::type>
 mersenne_twister (_Gen &_Gx)
 
void seed (_Ty _X0=default_seed, _Ty _Fx=(_Ty) 1812433253)
 
template<class _Gen , class = typename _Enable_if_seed_seq<_Gen, _Myt>::type>
void seed (_Gen &_Gx, bool=false)
 
template<class _Elem , class _S_Traits >
basic_ostream< _Elem, _S_Traits > & _Write (basic_ostream< _Elem, _S_Traits > &_Ostr) const
 
result_type() min () const
 
result_type() max () const
 
result_type operator() ()
 
void discard (unsigned long long _Nskip)
 
- Public Member Functions inherited from _Circ_buf< _Ty, _Nx >
_Ty _At (int _Ix) const
 
bool _Equals (const _Circ_buf &_Right) const
 
unsigned int _Base (int _Ix=0) const
 

Static Public Member Functions

static constexpr result_type() min ()
 
static constexpr result_type() max ()
 

Static Public Attributes

static constexpr unsigned long long _Max = (((1ULL << (_Wx - 1)) - 1) << 1) + 1
 
static constexpr size_t word_size = _Wx
 
static constexpr size_t state_size = _Nx
 
static constexpr size_t shift_size = _Mx
 
static constexpr size_t mask_bits = _Rx
 
static constexpr _Ty xor_mask = _Px
 
static constexpr size_t tempering_u = _Ux
 
static constexpr _Ty tempering_d = _Dx
 
static constexpr size_t tempering_s = _Sx
 
static constexpr _Ty tempering_b = _Bx
 
static constexpr size_t tempering_t = _Tx
 
static constexpr _Ty tempering_c = _Cx
 
static constexpr size_t tempering_l = _Lx
 
static constexpr _Ty initialization_multiplier = _Fx
 
static constexpr result_type default_seed = 5489U
 
- Static Public Attributes inherited from mersenne_twister< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Sx, _Bx, _Tx, _Cx, _Lx >
static constexpr int word_size = _Wx
 
static constexpr int state_size = _Nx
 
static constexpr int shift_size = _Mx
 
static constexpr int mask_bits = _Rx
 
static constexpr _Ty parameter_a = _Px
 
static constexpr int output_u = _Ux
 
static constexpr int output_s = _Sx
 
static constexpr _Ty output_b = _Bx
 
static constexpr int output_t = _Tx
 
static constexpr _Ty output_c = _Cx
 
static constexpr int output_l = _Lx
 
static constexpr _Ty default_seed = 5489U
 

Additional Inherited Members

- Public Attributes inherited from _Circ_buf< _Ty, _Nx >
unsigned int _Idx
 
_Ty _Ax [2 *_Nw]
 
- Protected Member Functions inherited from mersenne_twister< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Sx, _Bx, _Tx, _Cx, _Lx >
 _Post_satisfies_ (this->_Idx==0) void _Refill_lower()
 
void _Refill_upper ()
 
- Protected Attributes inherited from mersenne_twister< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Sx, _Bx, _Tx, _Cx, _Lx >
_Ty _Dxval
 
- Static Protected Attributes inherited from mersenne_twister< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Sx, _Bx, _Tx, _Cx, _Lx >
static constexpr _Ty _WMSK = ~((~_Ty(0) << (_Wx - 1)) << 1)
 
static constexpr _Ty _HMSK = (_WMSK << _Rx) & _WMSK
 
static constexpr _Ty _LMSK = ~_HMSK & _WMSK
 

Member Typedef Documentation

template<class _Ty , size_t _Wx, size_t _Nx, size_t _Mx, size_t _Rx, _Ty _Px, size_t _Ux, _Ty _Dx, size_t _Sx, _Ty _Bx, size_t _Tx, _Ty _Cx, size_t _Lx, _Ty _Fx>
typedef mersenne_twister<_Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Sx, _Bx, _Tx, _Cx, _Lx> mersenne_twister_engine< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::_Mybase
template<class _Ty , size_t _Wx, size_t _Nx, size_t _Mx, size_t _Rx, _Ty _Px, size_t _Ux, _Ty _Dx, size_t _Sx, _Ty _Bx, size_t _Tx, _Ty _Cx, size_t _Lx, _Ty _Fx>
typedef mersenne_twister_engine<_Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx> mersenne_twister_engine< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::_Myt
template<class _Ty , size_t _Wx, size_t _Nx, size_t _Mx, size_t _Rx, _Ty _Px, size_t _Ux, _Ty _Dx, size_t _Sx, _Ty _Bx, size_t _Tx, _Ty _Cx, size_t _Lx, _Ty _Fx>
typedef _Ty mersenne_twister_engine< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::result_type

Constructor & Destructor Documentation

template<class _Ty , size_t _Wx, size_t _Nx, size_t _Mx, size_t _Rx, _Ty _Px, size_t _Ux, _Ty _Dx, size_t _Sx, _Ty _Bx, size_t _Tx, _Ty _Cx, size_t _Lx, _Ty _Fx>
mersenne_twister_engine< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::mersenne_twister_engine ( result_type  _X0 = default_seed)
inlineexplicit
1512  : mersenne_twister<_Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Sx, _Bx,
1513  _Tx, _Cx, _Lx>(_X0, _Dx, _Fx) // TRANSITION, VSO#184864
1514  { // construct with default seed
1515  }
Definition: random:1266
template<class _Ty , size_t _Wx, size_t _Nx, size_t _Mx, size_t _Rx, _Ty _Px, size_t _Ux, _Ty _Dx, size_t _Sx, _Ty _Bx, size_t _Tx, _Ty _Cx, size_t _Lx, _Ty _Fx>
template<class _Seed_seq , class = typename _Enable_if_seed_seq<_Seed_seq, _Myt>::type>
mersenne_twister_engine< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::mersenne_twister_engine ( _Seed_seq &  _Seq)
inlineexplicit
1520  : mersenne_twister<_Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Sx, _Bx,
1521  _Tx, _Cx, _Lx>(default_seed, _Dx, _Fx) // TRANSITION, VSO#184864
1522  { // construct from seed sequence
1523  seed(_Seq);
1524  }
Definition: random:1266
void seed(result_type _X0=default_seed)
Definition: random:1526
static constexpr result_type default_seed
Definition: random:1509

Member Function Documentation

template<class _Ty , size_t _Wx, size_t _Nx, size_t _Mx, size_t _Rx, _Ty _Px, size_t _Ux, _Ty _Dx, size_t _Sx, _Ty _Bx, size_t _Tx, _Ty _Cx, size_t _Lx, _Ty _Fx>
static constexpr result_type() mersenne_twister_engine< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::max ( )
inlinestatic
1565  { // return maximum possible generated value
1566  return (_Mybase::_WMSK);
1567  }
static constexpr _Ty _WMSK
Definition: random:1407
template<class _Ty , size_t _Wx, size_t _Nx, size_t _Mx, size_t _Rx, _Ty _Px, size_t _Ux, _Ty _Dx, size_t _Sx, _Ty _Bx, size_t _Tx, _Ty _Cx, size_t _Lx, _Ty _Fx>
static constexpr result_type() mersenne_twister_engine< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::min ( )
inlinestatic
1560  { // return minimum possible generated value
1561  return (0);
1562  }
template<class _Ty , size_t _Wx, size_t _Nx, size_t _Mx, size_t _Rx, _Ty _Px, size_t _Ux, _Ty _Dx, size_t _Sx, _Ty _Bx, size_t _Tx, _Ty _Cx, size_t _Lx, _Ty _Fx>
void mersenne_twister_engine< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::seed ( result_type  _X0 = default_seed)
inline
1527  { // set initial values from specified value
1528  _Mybase::seed(_X0, _Fx);
1529  }
void seed(_Ty _X0=default_seed, _Ty _Fx=(_Ty) 1812433253)
Definition: random:1304
template<class _Ty , size_t _Wx, size_t _Nx, size_t _Mx, size_t _Rx, _Ty _Px, size_t _Ux, _Ty _Dx, size_t _Sx, _Ty _Bx, size_t _Tx, _Ty _Cx, size_t _Lx, _Ty _Fx>
template<class _Seed_seq , class = typename _Enable_if_seed_seq<_Seed_seq, _Myt>::type>
void mersenne_twister_engine< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::seed ( _Seed_seq &  _Seq)
inline
1534  { // reset sequence from seed sequence
1535  static constexpr int _Kx = (_Wx + 31) / 32;
1536  unsigned long _Arr[_Kx * _Nx];
1537  _Seq.generate(&_Arr[0], &_Arr[_Kx * _Nx]);
1538 
1539  int _Idx0 = 0;
1540  _Ty _Sum = 0;
1541  for (int _Ix = 0; _Ix < _Nx; ++_Ix, _Idx0 += _Kx)
1542  { // pack _Kx words
1543  this->_Ax[_Ix] = _Arr[_Idx0];
1544  for (int _Jx = 0; ++_Jx < _Kx; )
1545  this->_Ax[_Ix] |= (_Ty)_Arr[_Idx0 + _Jx] << (32 * _Jx);
1546  this->_Ax[_Ix] &= this->_WMSK;
1547 
1548  if (_Ix == 0)
1549  _Sum = this->_Ax[_Ix] >> _Rx;
1550  else
1551  _Sum |= this->_Ax[_Ix];
1552  }
1553  if (_Sum == 0)
1554  this->_Ax[0] = this->_WMSK;
1555 
1556  this->_Idx = _Nx;
1557  }
unsigned int _Idx
Definition: random:731
_Ty _Ax[2 *_Nw]
Definition: random:732
static constexpr _Ty _WMSK
Definition: random:1407

Member Data Documentation

template<class _Ty , size_t _Wx, size_t _Nx, size_t _Mx, size_t _Rx, _Ty _Px, size_t _Ux, _Ty _Dx, size_t _Sx, _Ty _Bx, size_t _Tx, _Ty _Cx, size_t _Lx, _Ty _Fx>
constexpr unsigned long long mersenne_twister_engine< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::_Max = (((1ULL << (_Wx - 1)) - 1) << 1) + 1
static
template<class _Ty , size_t _Wx, size_t _Nx, size_t _Mx, size_t _Rx, _Ty _Px, size_t _Ux, _Ty _Dx, size_t _Sx, _Ty _Bx, size_t _Tx, _Ty _Cx, size_t _Lx, _Ty _Fx>
constexpr result_type mersenne_twister_engine< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::default_seed = 5489U
static
template<class _Ty , size_t _Wx, size_t _Nx, size_t _Mx, size_t _Rx, _Ty _Px, size_t _Ux, _Ty _Dx, size_t _Sx, _Ty _Bx, size_t _Tx, _Ty _Cx, size_t _Lx, _Ty _Fx>
constexpr _Ty mersenne_twister_engine< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::initialization_multiplier = _Fx
static
template<class _Ty , size_t _Wx, size_t _Nx, size_t _Mx, size_t _Rx, _Ty _Px, size_t _Ux, _Ty _Dx, size_t _Sx, _Ty _Bx, size_t _Tx, _Ty _Cx, size_t _Lx, _Ty _Fx>
constexpr size_t mersenne_twister_engine< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::mask_bits = _Rx
static
template<class _Ty , size_t _Wx, size_t _Nx, size_t _Mx, size_t _Rx, _Ty _Px, size_t _Ux, _Ty _Dx, size_t _Sx, _Ty _Bx, size_t _Tx, _Ty _Cx, size_t _Lx, _Ty _Fx>
constexpr size_t mersenne_twister_engine< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::shift_size = _Mx
static
template<class _Ty , size_t _Wx, size_t _Nx, size_t _Mx, size_t _Rx, _Ty _Px, size_t _Ux, _Ty _Dx, size_t _Sx, _Ty _Bx, size_t _Tx, _Ty _Cx, size_t _Lx, _Ty _Fx>
constexpr size_t mersenne_twister_engine< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::state_size = _Nx
static
template<class _Ty , size_t _Wx, size_t _Nx, size_t _Mx, size_t _Rx, _Ty _Px, size_t _Ux, _Ty _Dx, size_t _Sx, _Ty _Bx, size_t _Tx, _Ty _Cx, size_t _Lx, _Ty _Fx>
constexpr _Ty mersenne_twister_engine< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::tempering_b = _Bx
static
template<class _Ty , size_t _Wx, size_t _Nx, size_t _Mx, size_t _Rx, _Ty _Px, size_t _Ux, _Ty _Dx, size_t _Sx, _Ty _Bx, size_t _Tx, _Ty _Cx, size_t _Lx, _Ty _Fx>
constexpr _Ty mersenne_twister_engine< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::tempering_c = _Cx
static
template<class _Ty , size_t _Wx, size_t _Nx, size_t _Mx, size_t _Rx, _Ty _Px, size_t _Ux, _Ty _Dx, size_t _Sx, _Ty _Bx, size_t _Tx, _Ty _Cx, size_t _Lx, _Ty _Fx>
constexpr _Ty mersenne_twister_engine< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::tempering_d = _Dx
static
template<class _Ty , size_t _Wx, size_t _Nx, size_t _Mx, size_t _Rx, _Ty _Px, size_t _Ux, _Ty _Dx, size_t _Sx, _Ty _Bx, size_t _Tx, _Ty _Cx, size_t _Lx, _Ty _Fx>
constexpr size_t mersenne_twister_engine< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::tempering_l = _Lx
static
template<class _Ty , size_t _Wx, size_t _Nx, size_t _Mx, size_t _Rx, _Ty _Px, size_t _Ux, _Ty _Dx, size_t _Sx, _Ty _Bx, size_t _Tx, _Ty _Cx, size_t _Lx, _Ty _Fx>
constexpr size_t mersenne_twister_engine< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::tempering_s = _Sx
static
template<class _Ty , size_t _Wx, size_t _Nx, size_t _Mx, size_t _Rx, _Ty _Px, size_t _Ux, _Ty _Dx, size_t _Sx, _Ty _Bx, size_t _Tx, _Ty _Cx, size_t _Lx, _Ty _Fx>
constexpr size_t mersenne_twister_engine< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::tempering_t = _Tx
static
template<class _Ty , size_t _Wx, size_t _Nx, size_t _Mx, size_t _Rx, _Ty _Px, size_t _Ux, _Ty _Dx, size_t _Sx, _Ty _Bx, size_t _Tx, _Ty _Cx, size_t _Lx, _Ty _Fx>
constexpr size_t mersenne_twister_engine< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::tempering_u = _Ux
static
template<class _Ty , size_t _Wx, size_t _Nx, size_t _Mx, size_t _Rx, _Ty _Px, size_t _Ux, _Ty _Dx, size_t _Sx, _Ty _Bx, size_t _Tx, _Ty _Cx, size_t _Lx, _Ty _Fx>
constexpr size_t mersenne_twister_engine< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::word_size = _Wx
static
template<class _Ty , size_t _Wx, size_t _Nx, size_t _Mx, size_t _Rx, _Ty _Px, size_t _Ux, _Ty _Dx, size_t _Sx, _Ty _Bx, size_t _Tx, _Ty _Cx, size_t _Lx, _Ty _Fx>
constexpr _Ty mersenne_twister_engine< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::xor_mask = _Px
static

The documentation for this class was generated from the following file: