00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _POISSON_H
00019 #define _POISSON_H
00020
00021 #include "Probability.h"
00022 #include "Gamma.h"
00023 #include "Binomial.h"
00024
00025 class Poisson;
00026
00027 typedef double (Poisson::*PoissonGenerator)() const;
00028
00029 #define CALL_POSSON_GENERATOR(object,ptrToMember) ((object).*(ptrToMember))
00030
00031 class Poisson:public Probability
00032 {
00033 public:
00034 Poisson(double mean=1.0);
00035 ~Poisson();
00036
00037 void setMean(double mean);
00038 double getMean() const;
00039 double getVariance() const;
00040 double getNextSample() const;
00041 private:
00042 double mean_;
00043 static double poissonSmall(const Poisson&);
00044 static double poissonLarge(const Poisson&);
00045 Gamma* gammaGen_;
00046 Binomial* binomialGen_;
00047 double (*generator_)(const Poisson&);
00048 double mValue_;
00049 };
00050
00051 #endif