...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::random::geometric_distribution
// In header: <boost/random/geometric_distribution.hpp> template<typename IntType = int, typename RealType = double> class geometric_distribution { public: // types typedef RealType input_type; typedef IntType result_type; // member classes/structs/unions class param_type { public: // types typedef geometric_distribution distribution_type; // public member functions explicit param_type(RealType = 0.5); RealType p() const; // friend functions template<typename CharT, typename Traits> std::basic_ostream< CharT, Traits > & operator<<(std::basic_ostream< CharT, Traits > &, const param_type &); template<typename CharT, typename Traits> std::basic_istream< CharT, Traits > & operator>>(std::basic_istream< CharT, Traits > &, const param_type &); bool operator==(const param_type &, const param_type &); bool operator!=(const param_type &, const param_type &); }; // public member functions explicit geometric_distribution(const RealType & = 0.5); explicit geometric_distribution(const param_type &); RealType p() const; IntType min() const; IntType max() const; param_type param() const; void param(const param_type &); void reset(); template<typename Engine> result_type operator()(Engine &) const; template<typename Engine> result_type operator()(Engine &, const param_type &) const; // friend functions template<typename CharT, typename Traits> std::basic_ostream< CharT, Traits > & operator<<(std::basic_ostream< CharT, Traits > &, const geometric_distribution &); template<typename CharT, typename Traits> std::basic_istream< CharT, Traits > & operator>>(std::basic_istream< CharT, Traits > &, const geometric_distribution &); bool operator==(const geometric_distribution &, const geometric_distribution &); bool operator!=(const geometric_distribution &, const geometric_distribution &); };
An instantiation of the class template geometric_distribution
models a random distribution . The distribution produces positive integers which are the number of bernoulli trials with probability p
required to get one that fails.
For the geometric distribution, .
Warning | |
---|---|
This distribution has been updated to match the C++ standard. Its behavior has changed from the original boost::geometric_distribution. A backwards compatible wrapper is provided in namespace boost. |
geometric_distribution
public member functionsexplicit geometric_distribution(const RealType & p = 0.5);
Contructs a new geometric_distribution with the paramter p
.
Requires: 0 < p < 1
explicit geometric_distribution(const param_type & param);
Constructs a new geometric_distribution from its parameters.
RealType p() const;
Returns: the distribution parameter p
IntType min() const;
Returns the smallest value that the distribution can produce.
IntType max() const;
Returns the largest value that the distribution can produce.
param_type param() const;
Returns the parameters of the distribution.
void param(const param_type & param);
Sets the parameters of the distribution.
void reset();
Effects: Subsequent uses of the distribution do not depend on values produced by any engine prior to invoking reset.
template<typename Engine> result_type operator()(Engine & eng) const;
Returns a random variate distributed according to the geometric_distribution.
template<typename Engine> result_type operator()(Engine & eng, const param_type & param) const;
Returns a random variate distributed according to the geometric distribution with parameters specified by param.
geometric_distribution
friend functionstemplate<typename CharT, typename Traits> std::basic_ostream< CharT, Traits > & operator<<(std::basic_ostream< CharT, Traits > & os, const geometric_distribution & gd);
Writes the distribution to a std::ostream
.
template<typename CharT, typename Traits> std::basic_istream< CharT, Traits > & operator>>(std::basic_istream< CharT, Traits > & is, const geometric_distribution & gd);
Reads the distribution from a std::istream
.
bool operator==(const geometric_distribution & lhs, const geometric_distribution & rhs);
Returns true if the two distributions will produce identical sequences of values given equal generators.
bool operator!=(const geometric_distribution & lhs, const geometric_distribution & rhs);
Returns true if the two distributions may produce different sequences of values given equal generators.