Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext

Class template lagged_fibonacci_01_engine

boost::random::lagged_fibonacci_01_engine

Synopsis

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

template<typename RealType,  w,  p,  q> 
class lagged_fibonacci_01_engine {
public:
  // types
  typedef  ;

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

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

  // public static functions
   ();
   ();

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

  // public data members
  static  has_fixed_range;
  static  word_size;
  static  long_lag;
  static  short_lag;
  static  default_seed;
};

Description

Instantiations of class template lagged_fibonacci_01 model a pseudo-random number generator . It uses a lagged Fibonacci algorithm with two lags p and q, evaluated in floating-point arithmetic: x(i) = x(i-p) + x(i-q) (mod 1) with p > q. See

"Uniform random number generators for supercomputers", Richard Brent, Proc. of Fifth Australian Supercomputer Conference, Melbourne, Dec. 1992, pp. 704-706.

[Note] Note

The quality of the generator crucially depends on the choice of the parameters. User code should employ one of the sensibly parameterized generators such as lagged_fibonacci607 instead.

The generator requires considerable amounts of memory for the storage of its state array. For example, lagged_fibonacci607 requires about 4856 bytes and lagged_fibonacci44497 requires about 350 KBytes.

lagged_fibonacci_01_engine public construct/copy/destruct

  1. ();

    Constructs a lagged_fibonacci_01 generator and calls seed().

  2. ( value);

    Constructs a lagged_fibonacci_01 generator and calls seed(value).

  3. template<typename SeedSeq> ( seq);

    Constructs a lagged_fibonacci_01 generator and calls seed(gen).

  4. template<typename It> ( first,  last);

lagged_fibonacci_01_engine public member functions

  1.  ();

    Calls seed(default_seed).

  2.  ( value);

    Constructs a minstd_rand0 generator with the constructor parameter value and calls seed with it. Distinct seeds in the range [1, 2147483647) will produce generators with different states. Other seeds will be equivalent to some seed within this range. See linear_congruential_engine for details.

  3. template<typename SeedSeq>  ( seq);

    Seeds this lagged_fibonacci_01_engine using values produced by seq.generate.

  4. template<typename It>  ( first,  last);

    Seeds this lagged_fibonacci_01_engine using values from the iterator range [first, last). If there are not enough elements in the range, throws std::invalid_argument.

  5.  ();

    Returns the next value of the generator.

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

    Fills a range with random values

  7.  ( z);

    Advances the state of the generator by z.

lagged_fibonacci_01_engine public static functions

  1.  ();

    Returns the smallest value that the generator can produce.

  2.  ();

    Returns the upper bound of the generators outputs.

lagged_fibonacci_01_engine friend functions

  1. template<typename CharT, typename Traits> 
       
      ( os, 
                 lagged_fibonacci_01_engine & f);

    Writes the textual representation of the generator to a std::ostream.

  2. template<typename CharT, typename Traits> 
       
      ( is, 
                 lagged_fibonacci_01_engine & f);

    Reads the textual representation of the generator from a std::istream.

  3.  (lagged_fibonacci_01_engine & x_, 
                    lagged_fibonacci_01_engine & y_);

    Returns true if the two generators will produce identical sequences of outputs.

  4.  (lagged_fibonacci_01_engine & lhs, 
                    lagged_fibonacci_01_engine & rhs);

    Returns true if the two generators will produce different sequences of outputs.


PrevUpHomeNext