Honeycomb  0.1
Component-Model Framework
BinomialNeg.h
Go to the documentation of this file.
1 // Honeycomb, Copyright (C) 2015 NewGamePlus Inc. Distributed under the Boost Software License v1.0.
2 #pragma once
3 
5 
6 namespace honey
7 {
8 
10 
25 template<class Real>
26 class BinomialNeg_ : public RandomDist<Real>
27 {
28  typedef RandomDist<Real> Super;
29  RandomDist_imports();
30  template<class> friend class BinomialNeg_;
31  typedef typename Numeral<Real>::Int Int;
33  typedef Gamma_<Double> Gamma;
35  typedef Beta_<Double> Beta;
36  typedef Poisson_<Double> Poisson;
37 public:
38  BinomialNeg_(RandomGen& gen, Real n, Real p) : RandomDist<Real>(gen), n(n), p(p) { assert(n > 0 && p >= 0 && p <= 1); }
39 
40  virtual Real next() const;
41  virtual Real pdf(Real x) const;
42  virtual Real cdf(Real x) const;
43  virtual Real cdfInv(Real P) const;
44  virtual Real mean() const { return n*(1-p) / p; }
45  virtual Real variance() const { return n*(1-p) / Alge::sqr(p); }
46 
48 
52  static Real trialProb(Int x, Real n, Real P);
53 
56 };
57 
61 
62 extern template class BinomialNeg_<Float>;
63 extern template class BinomialNeg_<Double>;
64 
65 }
Beta_< Real > Beta
Definition: Beta.h:57
Generate a random variate from a beta distribution .
Definition: Beta.h:30
Gamma_< Real > Gamma
Definition: Gamma.h:54
Random number generator interface.
Definition: Gen.h:11
Gaussian_< Real > Gaussian
Definition: Gaussian.h:56
Generate a random integer variate from a poisson distribution.
Definition: Poisson.h:28
Real p
Definition: BinomialNeg.h:55
virtual Real variance() const
Calc variance.
Definition: BinomialNeg.h:45
BinomialNeg_< Double > BinomialNeg_d
Definition: BinomialNeg.h:60
BinomialNeg_< Float > BinomialNeg_f
Definition: BinomialNeg.h:59
BinomialNeg_(RandomGen &gen, Real n, Real p)
Definition: BinomialNeg.h:38
virtual Real pdf(Real x) const
Probability Density Function.
Definition: BinomialNeg.cpp:19
virtual Real next() const
Get next randomly distributed variate. Requires a random generator (see ctor or setGen()) ...
Definition: BinomialNeg.cpp:11
Generate a random variate from a gamma distribution .
Definition: Gamma.h:29
Class to evaluate Gamma and related functions.
Definition: Gamma.h:9
GammaFunc_< Real > GammaFunc
Definition: Gamma.h:100
Poisson_< Real > Poisson
Definition: Poisson.h:59
virtual Real cdfInv(Real P) const
Inverse of the CDF.
Definition: BinomialNeg.cpp:36
Generate a random integer variate from a negative binomial distribution.
Definition: BinomialNeg.h:26
#define assert(...)
Forwards to assert_#args. See assert_1(), assert_2().
Definition: Debug.h:24
virtual Real mean() const
Calc mean.
Definition: BinomialNeg.h:44
float Real
Real number type. See Real_ for real number operations and constants.
Definition: Real.h:21
Numeric type information, use numeral() to get instance safely from a static context.
Definition: Numeral.h:17
BinomialNeg_< Real > BinomialNeg
Definition: BinomialNeg.h:58
static Num sqr(Num x)
Square.
Definition: Alge.h:60
static Real trialProb(Int x, Real n, Real P)
Calculate trial probability given all other values.
Definition: BinomialNeg.cpp:87
virtual Real cdf(Real x) const
Cumulative Distribution Function.
Definition: BinomialNeg.cpp:27
Generate a normally (Gaussian) distributed random variate.
Definition: Gaussian.h:26
Global Honeycomb namespace.
Real n
Definition: BinomialNeg.h:54
Base class for all random distributions.
Definition: Dist.h:15