Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext

Class template generalized_inverse_gaussian_distribution

boost::random::generalized_inverse_gaussian_distribution

Synopsis

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

template<typename RealType = double> 
class generalized_inverse_gaussian_distribution {
public:
  // types
  typedef RealType result_type;
  typedef RealType input_type; 

  // member classes/structs/unions

  class param_type {
  public:
    // types
    typedef generalized_inverse_gaussian_distribution distribution_type;

    // public member functions
    explicit param_type(RealType = 1.0, RealType = 1.0, RealType = 1.0);
    RealType p() const;
    RealType a() const;
    RealType b() 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 generalized_inverse_gaussian_distribution(RealType = 1.0, 
                                                     RealType = 1.0, 
                                                     RealType = 1.0);
  explicit generalized_inverse_gaussian_distribution(const param_type &);
  template<typename URNG> RealType operator()(URNG &) const;
  template<typename URNG> 
    result_type operator()(URNG &, const param_type &) const;
  RealType p() const;
  RealType a() const;
  RealType b() const;
  RealType min() const;
  RealType max() const;
  param_type param() const;
  void param(const param_type &);
  void reset();

  // friend functions
  template<typename CharT, typename Traits> 
    std::basic_ostream< CharT, Traits > & 
    operator<<(std::basic_ostream< CharT, Traits > &, 
               const generalized_inverse_gaussian_distribution &);
  template<typename CharT, typename Traits> 
    std::basic_istream< CharT, Traits > & 
    operator>>(std::basic_istream< CharT, Traits > &, 
               const generalized_inverse_gaussian_distribution &);
  bool operator==(const generalized_inverse_gaussian_distribution &, 
                  const generalized_inverse_gaussian_distribution &);
  bool operator!=(const generalized_inverse_gaussian_distribution &, 
                  const generalized_inverse_gaussian_distribution &);
};

Description

The generalized inverse gaussian distribution is a real-valued distribution with three parameters p, a, and b. It produced values > 0.

It has . where is a modified Bessel function of the second kind.

The algorithm used is from

"Random variate generation for the generalized inverse Gaussian distribution", Luc Devroye, Statistics and Computing, Volume 24, 2014, Pages 236 - 246

generalized_inverse_gaussian_distribution public member functions

  1. explicit generalized_inverse_gaussian_distribution(RealType p = 1.0, 
                                                       RealType a = 1.0, 
                                                       RealType b = 1.0);

    Constructs an generalized_inverse_gaussian_distribution from its "p", "a", and "b" parameters.

    Requires: a > 0 && b >= 0 if p > 0, a > 0 && b > 0 if p == 0, a >= 0 && b > 0 if p < 0

  2. explicit generalized_inverse_gaussian_distribution(const param_type & param);

    Constructs an generalized_inverse_gaussian_distribution from its parameters.

  3. template<typename URNG> RealType operator()(URNG & urng) const;

    Returns a random variate distributed according to the generalized inverse gaussian distribution.

  4. template<typename URNG> 
      result_type operator()(URNG & urng, const param_type & param) const;

    Returns a random variate distributed accordint to the beta distribution with parameters specified by param.

  5. RealType p() const;

    Returns the "p" parameter of the distribution.

  6. RealType a() const;

    Returns the "a" parameter of the distribution.

  7. RealType b() const;

    Returns the "b" parameter of the distribution.

  8. RealType min() const;

    Returns the smallest value that the distribution can produce.

  9. RealType max() const;

    Returns the largest value that the distribution can produce.

  10. param_type param() const;

    Returns the parameters of the distribution.

  11. void param(const param_type & param);

    Sets the parameters of the distribution.

  12. void reset();

    Effects: Subsequent uses of the distribution do not depend on values produced by any engine prior to invoking reset.

generalized_inverse_gaussian_distribution friend functions

  1. template<typename CharT, typename Traits> 
      std::basic_ostream< CharT, Traits > & 
      operator<<(std::basic_ostream< CharT, Traits > & os, 
                 const generalized_inverse_gaussian_distribution & wd);

    Writes an generalized_inverse_gaussian_distribution to a std::ostream.

  2. template<typename CharT, typename Traits> 
      std::basic_istream< CharT, Traits > & 
      operator>>(std::basic_istream< CharT, Traits > & is, 
                 const generalized_inverse_gaussian_distribution & wd);

    Reads an generalized_inverse_gaussian_distribution from a std::istream.

  3. bool operator==(const generalized_inverse_gaussian_distribution & lhs, 
                    const generalized_inverse_gaussian_distribution & rhs);

    Returns true if the two instances of generalized_inverse_gaussian_distribution will return identical sequences of values given equal generators.

  4. bool operator!=(const generalized_inverse_gaussian_distribution & lhs, 
                    const generalized_inverse_gaussian_distribution & rhs);

    Returns true if the two instances of generalized_inverse_gaussian_distribution will return different sequences of values given equal generators.


PrevUpHomeNext