Boost C++ Libraries of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

This is the documentation for an old version of Boost. Click here to view this page for the latest version.

Random Number Generator Library --- Miscellaneous Decorators


These decorator class templates allow adaptation of the random number generators and distribution functions to concepts found in the C++ Standard Library, in particular the RandomNumberGenerator and the InputIterator concepts. The latter adaptation is useful, because the the basic random number generators do not implement the InputIterator requirements per se, in contrast to the distribution functions.

Synopsis of miscellaneous decorators in header <boost/random.hpp>

namespace boost {
  template<class UniformRandomNumberGenerator, class IntType = long>
  class random_number_generator;
  template<class Generator>
  class generator_iterator;
} // namespace boost

Class template random_number_generator


template<class UniformRandomNumberGenerator, class IntType = long>
class random_number_generator
  typedef UniformRandomNumberGenerator base_type;
  typedef IntType argument_type;
  typedef IntType result_type;
  random_number_generator(base_type & rng);
  result_type operator()(argument_type n);


Instantiations of class template random_number_generator model a RandomNumberGenerator (std:25.2.11 [lib.alg.random.shuffle]). On each invocation, it returns a uniformly distributed integer in the range [0..n).

The template parameter IntType shall denote some integer-like value type.

Note: I consider it unfortunate that the C++ Standard uses the name RandomNumberGenerator for something rather specific.


random_number_generator(base_type & rng)
Effects: Constructs a random_number_generator functor with the given uniform random number generator as the underlying source of random numbers.
result_type operator()(argument_type n)
Returns: The value of uniform_int<base_type>(rng, 0, n-1)().

Jens Maurer, 2001-11-19