Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext

Class template mixmax_engine

boost::random::mixmax_engine

Synopsis

// In header: <boost/random/mixmax.hpp>

template< Ndim,  SPECIALMUL,  SPECIAL> 
class mixmax_engine {
public:
  // types
  typedef  ;

  // member classes/structs/unions

  struct rng_state_st {

    // public data members
     V;
     sumtot;
     counter;
  };

  // construct/copy/destruct
  ();
  ();
  (, , , );
  template<typename It> (, );
  template<typename SeedSeq> ();

  // public member functions
   ();
   ();
   ( = );
  template<typename It>  (, );
  template<typename SeeqSeq>  ();
   ();
  template<typename Iter>  (, );
   ();

  // friend functions
  template<typename CharT, typename Traits> 
     
    (, mixmax_engine &);
  template<typename CharT, typename Traits> 
     
    (, mixmax_engine &);

  // private member functions
   ();
   ();
   (, );
   (, , , , 
                         );
   (, );
   
  (, , , , 
                , );
   (, );
   
  (, , );

  // public data members
  static  mixmax_min;
  static  mixmax_max;
  static  has_fixed_range;
  static  N;  // The main internal parameter, size of the defining MIXMAX matrix. 
};

Description

Instantiations of class template mixmax_engine model, pseudo-random number generator . It uses the MIXMAX generator algorithms from:

G.K.Savvidy and N.G.Ter-Arutyunian, On the Monte Carlo simulation of physical systems, J.Comput.Phys. 97, 566 (1991); Preprint EPI-865-16-86, Yerevan, Jan. 1986 http://dx.doi.org/10.1016/0021-9991(91)90015-D

K.Savvidy The MIXMAX random number generator Comp. Phys. Commun. 196 (2015), pp 161–165 http://dx.doi.org/10.1016/j.cpc.2015.06.003

K.Savvidy and G.Savvidy Spectrum and Entropy of C-systems. MIXMAX random number generator Chaos, Solitons & Fractals, Volume 91, (2016) pp. 33–38 http://dx.doi.org/10.1016/j.chaos.2016.05.003

The generator crucially depends on the choice of the parameters. The valid sets of parameters are from the published papers above.

mixmax_engine public construct/copy/destruct

  1. ();
    Constructor, unit vector as initial state, acted on by A^2^512.
  2. ();
    Constructor, one 64-bit seed.

    < constructor, one uint64_t seed, random numbers are statistically independent from any two distinct seeds, e.g. consecutive seeds are ok

  3. ( clusterID,  machineID,  runID, 
                            streamID);
    Constructor, four 32-bit seeds for 128-bit seeding flexibility.
  4. template<typename It> ( first,  last);
  5. template<typename SeedSeq> ( seq);

mixmax_engine public member functions

  1.  ();
  2.  ();
  3.  ( seedval = );
    seed with one 64-bit seed
  4. template<typename It>  ( first,  last);

    Sets the state of the generator using values from an iterator range.

  5. template<typename SeeqSeq>  ( seq);

    Sets the state of the generator using values from a seed_seq.

  6.  ();

    return one uint64 between min=0 and max=2^61-1

  7. template<typename Iter>  ( first,  last);

    Fills a range with random values

  8.  ( nsteps);
    discard n steps, required in boost::random

mixmax_engine friend functions

  1. template<typename CharT, typename Traits> 
       
      ( ost, 
                 mixmax_engine & me);

    save the state of the RNG to a stream

  2. template<typename CharT, typename Traits> 
       
      ( in, mixmax_engine & me);

    read the state of the RNG from a stream

mixmax_engine private member functions

  1.  ( k);
  2.  ( k);
  3.  ( X,  i);
  4.  ( Xin,  clusterID, 
                            machineID,  runID,  streamID);
  5.  
    ( Y,  sumtotOld);
  6.  
    ( Vout,  Vin, 
                   clusterID,  machineID,  runID, 
                   streamID);
  7.  ( foo,  bar);
  8.  
    ( cum,  s,  a);

PrevUpHomeNext