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

Click here to view the latest version of this page.

Class template variate_generator



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

template<typename Engine, typename Distribution> 
class variate_generator {
  // types
  typedef helper_type::value_type   engine_value_type;
  typedef Engine                    engine_type;      
  typedef Distribution              distribution_type;
  typedef Distribution::result_type result_type;      

  // construct/copy/destruct
  variate_generator(Engine, Distribution);

  // public member functions
  result_type operator()();
  template<typename T> result_type operator()(const T &);
  engine_value_type & engine();
  const engine_value_type & engine() const;
  distribution_type & distribution();
  const distribution_type & distribution() const;
  result_type min() const;
  result_type max() const;


A random variate generator is used to join a random number generator together with a random number distribution. Boost.Random provides a vast choice of generators as well as distributions .

The argument for the template parameter Engine shall be of the form U, U&, or U*, where U models a uniform random number generator . Then, the member engine_value_type names U (not the pointer or reference to U).

Specializations of variate_generator satisfy the requirements of CopyConstructible. They also satisfy the requirements of Assignable unless the template parameter Engine is of the form U&.

The complexity of all functions specified in this section is constant. No function described in this section except the constructor throws an exception.

variate_generator public construct/copy/destruct

  1. variate_generator(Engine e, Distribution d);

    Constructs a variate_generator object with the associated uniform random number generator eng and the associated random distribution d.

    Throws: If and what the copy constructor of Engine or Distribution throws.

variate_generator public member functions

  1. result_type operator()();

    Returns: distribution()(engine())

  2. template<typename T> result_type operator()(const T & value);

    Returns: distribution()(engine(), value).

  3. engine_value_type & engine();

    Returns: A reference to the associated uniform random number generator.

  4. const engine_value_type & engine() const;

    Returns: A reference to the associated uniform random number generator.

  5. distribution_type & distribution();

    Returns: A reference to the associated random distribution .

  6. const distribution_type & distribution() const;

    Returns: A reference to the associated random distribution.

  7. result_type min() const;

    Precondition: distribution().min() is well-formed

    Returns: distribution().min()

  8. result_type max() const;

    Precondition: distribution().max() is well-formed

    Returns: distribution().max()