/search.css" rel="stylesheet" type="text/css"/> /search.js">
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | List of all members
r123::MicroURNG< CBRNG > Class Template Reference

#include <Random123/MicroURNG.hpp>

Public Types

typedef CBRNG cbrng_type
 
typedef cbrng_type::ctr_type ctr_type
 
typedef cbrng_type::key_type key_type
 
typedef cbrng_type::ukey_type ukey_type
 
typedef ctr_type::value_type result_type
 

Public Member Functions

result_type operator() ()
 
 MicroURNG (cbrng_type _b, ctr_type _c0, ukey_type _uk)
 
 MicroURNG (ctr_type _c0, ukey_type _uk)
 
const ctr_typecounter () const
 
void reset (ctr_type _c0, ukey_type _uk)
 

Static Public Member Functions

static R123_CONSTEXPR
result_type min 
R123_NO_MACRO_SUBST ()
 
static R123_CONSTEXPR
result_type max 
R123_NO_MACRO_SUBST ()
 

Static Public Attributes

static const int BITS = 32
 
static const result_type _Min = 0
 
static const result_type _Max = ~((result_type)0)
 

Detailed Description

template<typename CBRNG>
class r123::MicroURNG< CBRNG >

Given a CBRNG whose ctr_type has an unsigned integral value_type,
MicroURNG<CBRNG>(c, k) is a type that satisfies the
requirements of a C++0x Uniform Random Number Generator.

The intended purpose is for a MicroURNG to be passed
as an argument to a C++0x Distribution, e.g.,
std::normal_distribution.  See examples/MicroURNG.cpp.

The MicroURNG functor has a period of "only"

   ctr_type.size()*2^32,

after which it will silently repeat.

The high 32 bits of the highest word in the counter c, passed to
the constructor must be zero.  MicroURNG uses these bits to
"count".

Older versions of the library permitted a second template
parameter by which the caller could control the number of
bits devoted to the URNG's internal counter.  This flexibility
has been disabled because URNGs created with different
numbers of counter bits could, conceivably "collide".
typedef ?someCBRNG? RNG;
RNG::ctr_type c = ...; // under application control
RNG::key_type k = ...; //
std::normal_distribution<float> nd;
MicroURNG<RNG> urng(c, k);
for(???){
...
nd(urng); // may be called several hundred times with BITS=10
...
}

Member Typedef Documentation

template<typename CBRNG >
typedef CBRNG r123::MicroURNG< CBRNG >::cbrng_type
template<typename CBRNG >
typedef cbrng_type::ctr_type r123::MicroURNG< CBRNG >::ctr_type
template<typename CBRNG >
typedef cbrng_type::key_type r123::MicroURNG< CBRNG >::key_type
template<typename CBRNG >
typedef ctr_type::value_type r123::MicroURNG< CBRNG >::result_type
template<typename CBRNG >
typedef cbrng_type::ukey_type r123::MicroURNG< CBRNG >::ukey_type

Constructor & Destructor Documentation

template<typename CBRNG >
r123::MicroURNG< CBRNG >::MicroURNG ( cbrng_type  _b,
ctr_type  _c0,
ukey_type  _uk 
)
inline
template<typename CBRNG >
r123::MicroURNG< CBRNG >::MicroURNG ( ctr_type  _c0,
ukey_type  _uk 
)
inline

Member Function Documentation

template<typename CBRNG >
const ctr_type& r123::MicroURNG< CBRNG >::counter ( ) const
inline
template<typename CBRNG >
result_type r123::MicroURNG< CBRNG >::operator() ( )
inline
template<typename CBRNG >
static R123_CONSTEXPR result_type min r123::MicroURNG< CBRNG >::R123_NO_MACRO_SUBST ( )
inlinestatic
template<typename CBRNG >
static R123_CONSTEXPR result_type max r123::MicroURNG< CBRNG >::R123_NO_MACRO_SUBST ( )
inlinestatic
template<typename CBRNG >
void r123::MicroURNG< CBRNG >::reset ( ctr_type  _c0,
ukey_type  _uk 
)
inline

Member Data Documentation

template<typename CBRNG >
const result_type r123::MicroURNG< CBRNG >::_Max = ~((result_type)0)
static
template<typename CBRNG >
const result_type r123::MicroURNG< CBRNG >::_Min = 0
static
template<typename CBRNG >
const int r123::MicroURNG< CBRNG >::BITS = 32
static

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