C++ main module for mmsd Package  1.0
STAT_UniformDistribution.h
Go to the documentation of this file.
1 #ifndef STAT_UniformDistribution_H
2 #define STAT_UniformDistribution_H
3 
4 #include "STAT_Distribution.h"
5 #include <boost/math/distributions/uniform.hpp>
6 #include <boost/random/uniform_01.hpp>
7 #include <boost/random/uniform_real.hpp>
8 #include <boost/random/uniform_int.hpp>
9 #include <boost/random/variate_generator.hpp>
10 
19  SP_OBJECT(STAT_UniformDistribution);
20  // ATTRIBUTES
21 
22 private:
23 
24 
25 
26  // ASSOCIATIONS
27  boost::math::uniform_distribution<tReal> *mDistributionReal;
28  boost::math::uniform_distribution<int> *mDistributionInt;
29 
30  boost::uniform_01<tReal> *mRandomDistribution01;
31  boost::uniform_real<tReal> *mRandomDistributionReal;
32  boost::uniform_int<int> *mRandomDistributionInt;
33 
34  boost::random::variate_generator<RNGType&,
35  boost::uniform_01<tReal> > *mGenerator01;
36  boost::random::variate_generator<RNGType&,
37  boost::uniform_real<tReal> > *mGeneratorReal;
38  boost::random::variate_generator<RNGType&,
39  boost::uniform_int<int> > *mGeneratorInt;
40 
41 
42 protected:
43  // METHODS
44 
45  // CONSTRUCTORS
46 
49 
50 
51 
52  // DESTRUCTORS
53 
54 
57  virtual ~STAT_UniformDistribution(void);
58 private:
59  void freeAttributes();
60 
61 
62 
63 public:
64  //----------------
65  // NEW constructors
66  // ---------------
67 
70  inline static SP::STAT_UniformDistribution New(const tReal& lower,const tReal& upper) {
71  SP::STAT_UniformDistribution p=New();
72  p->setProperties(lower,upper);
73  return p;
74  }
77  inline static SP::STAT_UniformDistribution New(const int& lower,const int& upper) {
78  SP::STAT_UniformDistribution p=New();
79  p->setProperties(lower,upper);
80  return p;
81  }
84  inline static SP::STAT_UniformDistribution New() {
85  SP::STAT_UniformDistribution p(new STAT_UniformDistribution(),
87  p->setThis(p);
88  return p;
89  }
92  virtual SP::STAT_Distribution NewInstance() const {
93  return New();
94  }
95 
96 
99  virtual void copy(const STAT_Distribution& d) {
100  tReal a,b;
101  tReal m=d.mean();
102  tReal v=d.variance();
103  b=m+sqrt(3*v);
104  a=m-sqrt(3*v);
105  setProperties(a,b);
106  }
107  // --------------------
108  // ATTRIBUTES setting
109  // --------------------
110 
111  void setProperties(const tReal& lower,const tReal& upper);
112  void setProperties(const int& lower,const int& upper);
113 
114  // -----------------------
115  // USUAL Functions
116  // ------------------------
117 
118 
121  virtual tReal pdf(const tReal& x) const;
122 
125  virtual tReal cdf(const tReal& x) const;
126 
129  virtual tReal cdfc(const tReal& x) const;
130 
133  virtual void range(tReal& xmin,tReal& xmax) const;
134 
137  virtual tReal mean() const;
138 
141  virtual tReal variance() const;
144  virtual tReal standardDeviation() const;
145 
149  virtual tReal random() const;
150 
151 
154  virtual void computeSample(const int& n,CORE_RealArray& sample) const;
155 
156 
157 
158 protected:
159  /* \brief return the growth rate of the distribution
160  * @param adjust: is true rescale the parameters of the distribution suach as its growth rate is rho
161  *
162  */
163  virtual tReal computeGrowthRate(const tReal& v,
164  const tBoolean& adjust,
165  const tReal& rho);
166 
167 
168 
169 
170 
171 
172 };
173 
174 #endif
virtual tReal cdfc(const tReal &x) const
compute the cumulative distribution complement function at x point
Definition: STAT_UniformDistribution.cpp:107
virtual tReal random() const
random return a random numbers in range
Definition: STAT_UniformDistribution.cpp:141
STAT_UniformDistribution()
create an object
Definition: STAT_UniformDistribution.cpp:6
virtual void range(tReal &xmin, tReal &xmax) const
compute the range of the distribution
Definition: STAT_UniformDistribution.cpp:74
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 pdf(const tReal &x) const
compute the probability density function at x point
Definition: STAT_UniformDistribution.cpp:88
virtual tReal mean() const =0
compute the mean
#define tBoolean
Definition: types.h:48
This class is the class to describes Uniform distribution.
Definition: STAT_UniformDistribution.h:18
static SP::STAT_UniformDistribution New()
create a Uniform distibution
Definition: STAT_UniformDistribution.h:84
virtual SP::STAT_Distribution NewInstance() const
create a new instance of the distribution
Definition: STAT_UniformDistribution.h:92
this class describes an array
Definition: CORE_Array.h:18
virtual tReal mean() const
compute the mean
Definition: STAT_UniformDistribution.cpp:117
virtual void copy(const STAT_Distribution &d)
copy the distribution
Definition: STAT_UniformDistribution.h:99
virtual tReal cdf(const tReal &x) const
compute the cumulative distribution function at x point
Definition: STAT_UniformDistribution.cpp:98
virtual tReal variance() const
compute the variance
Definition: STAT_UniformDistribution.cpp:125
static SP::STAT_UniformDistribution New(const tReal &lower, const tReal &upper)
create a Uniform distibution
Definition: STAT_UniformDistribution.h:70
static SP::STAT_UniformDistribution New(const int &lower, const int &upper)
create a Uniform distibution
Definition: STAT_UniformDistribution.h:77
This class is the class to describes general distribution.
Definition: STAT_Distribution.h:25
virtual ~STAT_UniformDistribution(void)
destroy an object.
Definition: STAT_UniformDistribution.cpp:19
virtual tReal variance() const =0
compute the variance
virtual void computeSample(const int &n, CORE_RealArray &sample) const
compute a sample of size n
Definition: STAT_UniformDistribution.cpp:150
virtual tReal standardDeviation() const
compute the standard deviation
Definition: STAT_UniformDistribution.cpp:133
boost::mt19937 RNGType
Definition: STAT_Distribution.h:23
DEFINE_SPTR(STAT_UniformDistribution)
#define tReal
Definition: types.h:18
void setProperties(const tReal &lower, const tReal &upper)
Definition: STAT_UniformDistribution.cpp:43
class Free introduced for deleting a smart pointer
Definition: CORE_Object.h:106