Main Page | Namespace List | Class Hierarchy | Class List | File List | Class Members

distrib.h

00001 
00008 #ifndef DISTRIB_H
00009 #define DISTRIB_H
00010 
00011 #include <math.h>
00012 
00022 class Distrib
00023 {
00024 private:
00025   static unsigned long int seed_; 
00026   static signed long int x_;      
00027   static signed long int y_;      
00028   static signed long int z_;      
00029   static inline signed long int Trunc(double x) {
00030         return (x >=0) ? (int(floor(x))) : (int(ceil(x)));
00031   };
00032   
00033 protected:      
00039   Distrib (void);
00045   double Pick(void);
00046   
00047 public:
00048   virtual ~Distrib (void);
00049 
00056   virtual double  GetVal (void) = 0;
00064   static void InitRng (unsigned long int seed=0);
00065 };
00066 
00067 
00071 class Constant : public Distrib {
00072 private:
00073   double val_;
00074 public:
00075   Constant(double value);
00079   double GetVal(void);
00080 };
00081 
00085 class Unif01 : public Distrib {
00086 public:
00087   Unif01(void);
00091   double GetVal(void);
00092 };
00093 
00097 class Uniform : public Distrib {
00098 private:
00099   double a_;
00100   double b_;
00101 public:
00102   Uniform(double a, double b);
00106   double GetVal(void);
00107 };
00108 
00109 
00113 class Exponential : public Distrib {
00114 private:
00115   double mean_;
00116 public:
00117   Exponential (double m);
00121   double GetVal(void);
00122 };
00123 
00128 class Normal : public Distrib {
00129 private:
00130   double mean_;
00131   double sDev_;
00132 public:
00133   Normal (double m, double sDev);
00137   double GetVal(void);
00138 };
00139 
00143 class ErlangK: public Distrib {
00144 private:
00145   double k_;
00146   double mean_;
00147 public:
00148   ErlangK (unsigned int k, double m);
00152   double GetVal(void);
00153 };
00154 
00159 class Pareto: public Distrib {
00160 private:
00161   double scale_;
00162   double alpha_;
00163 public:
00164   Pareto (double scale, double alpha);
00168   double GetVal(void);
00169 };
00170 
00175 class HyperExponential: public Distrib {
00176 private:
00177   double mean_;
00178   double sDev_;
00179   double p_;
00180 public:
00181   HyperExponential(double m, double sDev);
00185   double GetVal(void);
00186 };
00187 
00188 
00192 class DiscreteEmpirical: public Distrib {
00193  private:
00194   typedef struct {
00195         double Fx;
00196         double val;
00197   } valT_;
00198   valT_ *accumP_;
00199   int n_;
00200  public:
00206   DiscreteEmpirical (const double P[],const double V[], int n);
00207   virtual ~DiscreteEmpirical (void);    
00208   double GetVal (void);
00209 };
00210 
00211 #endif
00212 

Generated on Fri Jan 19 15:35:17 2007 by  doxygen 1.4.2