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)
 
 mersenne_twister_engine (const mersenne_twister_engine &_Right)
 
 mersenne_twister_engine (mersenne_twister_engine &_Right)
 
template<class _Seed_seq , class = typename enable_if< !is_convertible<_Seed_seq, _Ty>::value, void>::type>
 mersenne_twister_engine (_Seed_seq &_Seq)
 
void seed (unsigned long _X0=default_seed)
 
template<class _Seed_seq >
enable_if< !is_convertible< _Seed_seq, _Ty >::value, void >::type 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 (unsigned long _X0=default_seed, _Ty _Dxarg=_WMSK, _Ty _Fxarg=(_Ty) 1812433253)
 
 mersenne_twister (const mersenne_twister &_Right)
 
 mersenne_twister (mersenne_twister &_Right)
 
template<class _Gen >
 mersenne_twister (_Gen &_Gx)
 
void seed (unsigned long _X0=default_seed, _Ty _Fx=(_Ty) 1812433253)
 
template<class _Gen >
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 result_type() min ()
 
static result_type() max ()
 

Static Public Attributes

static const unsigned long long _Max = (((1ULL << (_Wx - 1)) - 1) << 1) + 1
 
static const size_t word_size = _Wx
 
static const size_t state_size = _Nx
 
static const size_t shift_size = _Mx
 
static const size_t mask_bits = _Rx
 
static const _Ty xor_mask = _Px
 
static const size_t tempering_u = _Ux
 
static const _Ty tempering_d = _Dx
 
static const size_t tempering_s = _Sx
 
static const _Ty tempering_b = _Bx
 
static const size_t tempering_t = _Tx
 
static const _Ty tempering_c = _Cx
 
static const size_t tempering_l = _Lx
 
static const _Ty initialization_multiplier = _Fx
 
static const 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 const int word_size = _Wx
 
static const int state_size = _Nx
 
static const int shift_size = _Mx
 
static const int mask_bits = _Rx
 
static const _Ty parameter_a = _Px
 
static const int output_u = _Ux
 
static const int output_s = _Sx
 
static const _Ty output_b = _Bx
 
static const int output_t = _Tx
 
static const _Ty output_c = _Cx
 
static const int output_l = _Lx
 
static const _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 const _Ty _WMSK = ~((~_Ty(0) << (_Wx - 1)) << 1)
 
static const _Ty _HMSK = (_WMSK << _Rx) & _WMSK
 
static const _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
1581  : _Mybase((unsigned long)_X0, _Dx, _Fx)
1582  { // construct with default seed
1583  }
mersenne_twister< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Sx, _Bx, _Tx, _Cx, _Lx > _Mybase
Definition: random:1561
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 ( const mersenne_twister_engine< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx > &  _Right)
inline
1586  { // construct by copying
1587  *this = _Right;
1588  }
const _Ty & _Right
Definition: algorithm:4087
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 ( mersenne_twister_engine< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx > &  _Right)
inline
1591  { // construct by copying
1592  *this = _Right;
1593  }
const _Ty & _Right
Definition: algorithm:4087
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< !is_convertible<_Seed_seq, _Ty>::value, void>::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
1600  : _Mybase((unsigned long)default_seed, _Dx, _Fx)
1601  { // construct from seed sequence
1602  seed(_Seq);
1603  }
static const result_type default_seed
Definition: random:1578
void seed(unsigned long _X0=default_seed)
Definition: random:1605
mersenne_twister< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Sx, _Bx, _Tx, _Cx, _Lx > _Mybase
Definition: random:1561

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 result_type() mersenne_twister_engine< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::max ( )
inlinestatic
1646  { // return maximum possible generated value
1647  return (_Mybase::_WMSK);
1648  }
static const _Ty _WMSK
Definition: random:1478
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 result_type() mersenne_twister_engine< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::min ( )
inlinestatic
1641  { // return minimum possible generated value
1642  return (0);
1643  }
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 ( unsigned long  _X0 = default_seed)
inline
1606  { // set initial values from specified value
1607  _Mybase::seed(_X0, _Fx);
1608  }
void seed(unsigned long _X0=default_seed, _Ty _Fx=(_Ty) 1812433253)
Definition: random:1376
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 >
enable_if< !is_convertible<_Seed_seq, _Ty>::value, void>::type mersenne_twister_engine< _Ty, _Wx, _Nx, _Mx, _Rx, _Px, _Ux, _Dx, _Sx, _Bx, _Tx, _Cx, _Lx, _Fx >::seed ( _Seed_seq &  _Seq)
inline
1615  { // reset sequence from seed sequence
1616  static const int _Kx = (_Wx + 31) / 32;
1617  unsigned long _Arr[_Kx * _Nx];
1618  _Seq.generate(&_Arr[0], &_Arr[_Kx * _Nx]);
1619 
1620  int _Idx0 = 0;
1621  _Ty _Sum = 0;
1622  for (int _Ix = 0; _Ix < _Nx; ++_Ix, _Idx0 += _Kx)
1623  { // pack _Kx words
1624  this->_Ax[_Ix] = _Arr[_Idx0];
1625  for (int _Jx = 0; ++_Jx < _Kx; )
1626  this->_Ax[_Ix] |= (_Ty)_Arr[_Idx0 + _Jx] << (32 * _Jx);
1627  this->_Ax[_Ix] &= this->_WMSK;
1628 
1629  if (_Ix == 0)
1630  _Sum = this->_Ax[_Ix] >> _Rx;
1631  else
1632  _Sum |= this->_Ax[_Ix];
1633  }
1634  if (_Sum == 0)
1635  this->_Ax[0] = this->_WMSK;
1636 
1637  this->_Idx = _Nx;
1638  }
unsigned int _Idx
Definition: random:777
_Ty _Ax[2 *_Nw]
Definition: random:778
static const _Ty _WMSK
Definition: random:1478

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>
const 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>
const 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>
const _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>
const 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>
const 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>
const 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>
const _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>
const _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>
const _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>
const 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>
const 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>
const 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>
const 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>
const 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>
const _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: