variate_generator
#include <boost/random/variate_generator.hpp> template<class Engine, class Distribution> class variate_generator { public: typedef Engine engine_type; typedef Distribution distribution_type; typedef typename Distribution::result_type result_type; variate_generator(Engine e, Distribution d); result_type operator()(); template<class T> result_type operator()(T value); engine_value_type& engine(); const engine_value_type& engine() const; result_type min() const; result_type max() const; };
variate_generator
model a
number generator.
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(engine_type eng, distribution_type d)Effects: Constructs a
variate_generator
object with the associated uniform random number generator
eng
and the associated random distribution
d
.
result_type operator()()Returns:
distribution()(e)
e
, se, is
obtained from the sequence of numbers produced by the associated
uniform random number generator eng
, seng, as
follows: Consider the values of
numeric_limits<T>::is_integer
for
T
both Distribution::input_type
and
engine_value_type::result_type
. If the values for both
types are true
, then se is identical to
seng. Otherwise, if the values for both types are
false
, then the numbers in seng are divided by
engine().max()-engine().min()
to obtain the
numbers in se. Otherwise, if the value for
engine_value_type::result_type
is true
and
the value for Distribution::input_type
is
false
, then the numbers in seng are divided by
engine().max()-engine().min()+1
to obtain the
numbers in se. Otherwise, the mapping from seng
to se is implementation-defined. In all cases, an implicit
conversion from engine_value_type::result_type
to
Distribution::input_type
is performed. If such a
conversion does not exist, the program is ill-formed.
template<class T> result_type operator()(T value)Returns:
distribution()(e, value)
. For
the semantics of e
, see the description of
operator()()
.
engine_value_type& engine()Returns: A reference to the associated uniform random number generator.
const engine_value_type& engine() constReturns: A reference to the associated uniform random number generator.
distribution_type& distribution()Returns: A reference to the associated random distribution.
const distribution_type& distribution() constReturns: A reference to the associated random distribution.
result_type min() constPrecondition:
distribution().min()
is
well-formed
distribution().min()
result_type max() constPrecondition:
distribution().max()
is
well-formed
distribution().max()