![]() |
Home | Libraries | People | FAQ | More |
boost::random::uniform_smallint
// In header: <boost/random/uniform_smallint.hpp> template<typename IntType> class uniform_smallint { public: // types typedef ; typedef ; // member classes/structs/unions class param_type { public: // types typedef uniform_smallint ; // construct/copy/destruct ( = , = ); // public member functions () ; () ; // friend functions template<typename CharT, typename Traits> (, param_type &); template<typename CharT, typename Traits> (, param_type &); (param_type &, param_type &); (param_type &, param_type &); }; // construct/copy/destruct ( = , = ); (param_type &); // public member functions () ; () ; () ; () ; param_type () ; (param_type &); (); template<typename Engine> () ; template<typename Engine> (, param_type &) ; // friend functions template<typename CharT, typename Traits> (, uniform_smallint &); template<typename CharT, typename Traits> (, uniform_smallint &); (uniform_smallint &, uniform_smallint &); (uniform_smallint &, uniform_smallint &); };
The distribution function uniform_smallint models a random distribution . On each invocation, it returns a random integer value uniformly distributed in the set of integer numbers {min, min+1, min+2, ..., max}. It assumes that the desired range (max-min+1) is small compared to the range of the underlying source of random numbers and thus makes no attempt to limit quantization errors.
Let the desired range of integer numbers, and let
be the range of the underlying source of random numbers. Then, for the uniform distribution, the theoretical probability for any number i in the range
will be
. Likewise, assume a uniform distribution on
for the underlying source of random numbers, i.e.
. Let
denote the random distribution generated by
uniform_smallint
. Then the sum over all i in of
shall not exceed
.
The template parameter IntType shall denote an integer-like value type.
![]() |
Note |
---|---|
The property above is the square sum of the relative differences in probabilities between the desired uniform distribution |
Note: The upper bound for is
. Regarding the upper bound for the square sum of the relative quantization error of
, it seems wise to either choose
so that
or ensure that
is divisible by
.
uniform_smallint
public
construct/copy/destruct( min = , max = );
Constructs a
. uniform_smallint
min
and max
are the lower and upper bounds of the output range, respectively.
(param_type & param);
Constructs a
from its parameters. uniform_smallint
uniform_smallint
public member functions() ;
Returns the minimum value of the distribution.
() ;
Returns the maximum value of the distribution.
() ;
Returns the minimum value of the distribution.
() ;
Returns the maximum value of the distribution.
param_type () ;
Returns the parameters of the distribution.
(param_type & param);
Sets the parameters of the distribution.
();
Effects: Subsequent uses of the distribution do not depend on values produced by any engine prior to invoking reset.
template<typename Engine> ( eng) ;
Returns a value uniformly distributed in the range [min(), max()].
template<typename Engine> ( eng, param_type & param) ;
Returns a value uniformly distributed in the range [param.a(), param.b()].
uniform_smallint
friend functionstemplate<typename CharT, typename Traits> ( os, uniform_smallint & ud);
Writes the distribution to a std::ostream
.
template<typename CharT, typename Traits> ( is, uniform_smallint & ud);
Reads the distribution from a std::istream
.
(uniform_smallint & lhs, uniform_smallint & rhs);
Returns true if the two distributions will produce identical sequences of values given equal generators.
(uniform_smallint & lhs, uniform_smallint & rhs);
Returns true if the two distributions may produce different sequences of values given equal generators.