00001 #if !defined (DISTRIBUTIONS_H) 00002 #define DISTRIBUTIONS_H 00003 /********************************************************/ 00005 class Distribution{ 00006 00007 public: 00008 virtual double pdf(double x); 00009 virtual double cdf(double x); 00010 virtual double icdf(double x); 00011 }; 00012 /********************************************************/ 00014 class UniformDistribution:public Distribution{ 00015 public: 00016 double pdf(double x) const; 00017 double cdf(double x) const; 00018 }; 00019 /********************************************************/ 00021 class NormalDistribution:public Distribution{ 00022 private: 00023 const double mu; 00024 const double sigma; 00025 00026 public: 00027 NormalDistribution(double mu, double sigma); 00028 double pdf(double x) const; 00029 double cdf(double x) const; 00030 double icdf(double p) const; 00031 }; 00032 /********************************************************/ 00034 class ChiSquareDistribution:public Distribution{ 00035 private: 00036 const double dof; 00037 00038 public: 00039 ChiSquareDistribution(double dof); 00040 double pdf(double x) const; 00041 double cdf(double x) const; 00042 }; 00043 #endif