Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes

r123::MicroURNG< CBRNG > Class Template Reference

#include <Random123/MicroURNG.hpp>

List of all members.

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 (  )  [inline, static]
template<typename CBRNG >
static R123_CONSTEXPR result_type max r123::MicroURNG< CBRNG >::R123_NO_MACRO_SUBST (  )  [inline, static]
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:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines