| Home | Libraries | People | FAQ | More

## Class template variate_generator

boost::variate_generator

## Synopsis

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

    template<typename Engine, typename Distribution>
    class variate_generator {
    public:
      // 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;
    };

## Description

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()