C++ main module for mmsd Package  1.0
STAT_ExponentialDistribution.h
Go to the documentation of this file.
1 #ifndef STAT_ExponentialDistribution_H
2 #define STAT_ExponentialDistribution_H
3 
4 #include "STAT_Distribution.h"
5 #include <boost/math/distributions/exponential.hpp>
6 #include <boost/random/exponential_distribution.hpp>
7 #include <boost/random/variate_generator.hpp>
8 
18  // ATTRIBUTES
19 
20 public:
21 
22 private:
23 
24 
25 
26  // ASSOCIATIONS
27  boost::math::exponential_distribution<tReal> *mDistribution;
28  boost::random::exponential_distribution<tReal> *mRandomDistribution;
29  boost::random::variate_generator<RNGType&,
30  boost::random::exponential_distribution<tReal> > *mGenerator;
31 
32 protected:
33  // METHODS
34 
35  // CONSTRUCTORS
36 
39 
40 
41 
42  // DESTRUCTORS
43 
44 
47  virtual ~STAT_ExponentialDistribution(void);
48 
49 
50 
51 public:
52  //----------------
53  // NEW constructors
54  // ---------------
55 
58  inline static SP::STAT_ExponentialDistribution New(const tReal& lambda) {
59  SP::STAT_ExponentialDistribution p(new STAT_ExponentialDistribution(),
61 
62  p->setProperties(lambda);
63  p->setThis(p);
64  return p;
65  }
68  inline static SP::STAT_ExponentialDistribution New() {
69  return New(1);
70  }
73  virtual SP::STAT_Distribution NewInstance() const {
74  return New();
75  }
76 
77 
80  virtual void copy(const STAT_Distribution& d) {
81  if (d.mean()!=0) setProperties(1./d.mean());
82  }
83 
84  // --------------------
85  // ATTRIBUTES setting
86  // --------------------
87 
88  void setProperties(const tReal& lambda);
89 
90  inline void getProperties(tReal& lambda) const {
91  lambda=1./mean();
92  }
93  // -----------------------
94  // USUAL Functions
95  // ------------------------
96 
97 
100  virtual tReal pdf(const tReal& x) const;
101 
104  virtual tReal cdf(const tReal& x) const;
105 
108  virtual tReal cdfc(const tReal& x) const;
109 
112  virtual void range(tReal& xmin,tReal& xmax) const;
113 
116  virtual tReal mean() const;
117 
120  virtual tReal variance() const;
123  virtual tReal standardDeviation() const;
126  virtual tReal quantile(const tReal& q) const;
127 
131  virtual tReal random() const;
132 
135  virtual void computeSample(const int& n,CORE_RealArray& sample) const;
136 
137 
138 
139 protected:
140  /* \brief return the growth rate of the distribution
141  * @param adjust: is true rescale the parameters of the distribution suach as its growth rate is rho
142  *
143  */
144  virtual tReal computeGrowthRate(const tReal& v,
145  const tBoolean& adjust,
146  const tReal& rho) ;
147 
148 };
149 
150 #endif
STAT_ExponentialDistribution()
create an object
Definition: STAT_ExponentialDistribution.cpp:5
virtual tReal mean() const
compute the mean
Definition: STAT_ExponentialDistribution.cpp:61
virtual tReal quantile(const tReal &q) const
quantile
Definition: STAT_ExponentialDistribution.cpp:76
virtual void range(tReal &xmin, tReal &xmax) const
compute the range of the distribution
Definition: STAT_ExponentialDistribution.cpp:37
virtual void copy(const STAT_Distribution &d)
copy the distribution
Definition: STAT_ExponentialDistribution.h:80
virtual tReal computeGrowthRate()
return the growth rate of the distribution such that Esperance(E(exp(-z*X)))=0.5
Definition: STAT_Distribution.h:133
virtual tReal cdfc(const tReal &x) const
compute the cumulative distribution complement function at x point
Definition: STAT_ExponentialDistribution.cpp:56
void getProperties(tReal &lambda) const
Definition: STAT_ExponentialDistribution.h:90
DEFINE_SPTR(STAT_ExponentialDistribution)
virtual tReal cdf(const tReal &x) const
compute the cumulative distribution function at x point
Definition: STAT_ExponentialDistribution.cpp:50
virtual tReal mean() const =0
compute the mean
#define tBoolean
Definition: types.h:48
virtual ~STAT_ExponentialDistribution(void)
destroy an object.
Definition: STAT_ExponentialDistribution.cpp:13
virtual tReal random() const
random return a random numbers in range
Definition: STAT_ExponentialDistribution.cpp:80
static SP::STAT_ExponentialDistribution New(const tReal &lambda)
create a Exponential distibution
Definition: STAT_ExponentialDistribution.h:58
this class describes an array
Definition: CORE_Array.h:18
virtual void computeSample(const int &n, CORE_RealArray &sample) const
compute a sample of size n
Definition: STAT_ExponentialDistribution.cpp:87
virtual tReal variance() const
compute the variance
Definition: STAT_ExponentialDistribution.cpp:66
virtual tReal standardDeviation() const
compute the standard deviation
Definition: STAT_ExponentialDistribution.cpp:71
This class is the class to describes general distribution.
Definition: STAT_Distribution.h:25
virtual SP::STAT_Distribution NewInstance() const
create a new instance of the distribution
Definition: STAT_ExponentialDistribution.h:73
static SP::STAT_ExponentialDistribution New()
create a Exponential distibution
Definition: STAT_ExponentialDistribution.h:68
boost::mt19937 RNGType
Definition: STAT_Distribution.h:23
void setProperties(const tReal &lambda)
Definition: STAT_ExponentialDistribution.cpp:22
#define tReal
Definition: types.h:18
virtual tReal pdf(const tReal &x) const
compute the probability density function at x point
Definition: STAT_ExponentialDistribution.cpp:45
This class is the class to describes Exponential distribution.
Definition: STAT_ExponentialDistribution.h:16
class Free introduced for deleting a smart pointer
Definition: CORE_Object.h:106