C++ mpi module for stochmagnet_main Package
RAND_RandomNumberDistribution.h
1 #ifndef RAND_RandomNumberDistribution_H
2 #define RAND_RandomNumberDistribution_H
3 
4 //inherited class header
5 #include "RAND_Object.h"
6 
7 //random number generator header
8 #include "RAND_RandomNumberGenerator.h"
9 
16 template<typename T,class I,class D>
18 
19  // ATTRIBUTES
20 
21 public:
22 
23 
24 
25 private:
26 
27  //internal distribution
28  I *mDistribution;
29 
30 
31  //class This
33 
34 
35 protected:
36  // METHODS
37 
38  // CONSTRUCTORS
39 
43  mDistribution=null;
44  }
45 
46 
47 
48  // DESTRUCTORS
49 
50 
54  freeDistribution();
55  }
56 
57 
58 public:
59 
60 
61  //MEMORY
62 
76  virtual tMemSize getMemorySize() const {
77  return sizeof(*this)+getContentsMemorySize();
78  }
79 
88  virtual tMemSize getContentsMemorySize() const {
90  mem+=(mDistribution==null)?0:sizeof(*mDistribution);
91 
92  return mem;
93  }
94 
95 private:
96  inline void freeDistribution() {
97  if (mDistribution!=NULL) delete mDistribution;
98  mDistribution=null;
99  }
100 protected:
103  inline void initialize(I& dist) {
104  freeDistribution();
105  mDistribution=new I(dist);
106  }
107 
108  // RANDOM method
109  // ==============
110 public:
111 
115  template<typename T1,class G,class D1>
117  return (*mDistribution)(generator.getGenerator());
118  }
119 
120 
124  inline I& getDistribution() {
125  return *mDistribution;
126  }
127 
130  inline T minValue() const {
131  mDistribution->min();
132  }
135  inline T maxValue() const {
136  mDistribution->max();
137  }
138 
139 
143  inline tReal pdf(const T& x) const {
144  return static_cast<const D*>(this)->pdf(x);
145  }
149  inline tReal cdf(const T& x) const {
150  return static_cast<const D*>(this)->cdf(x);
151  }
155  inline tReal icdf(const T& y) const {
156  return static_cast<const D*>(this)->icdf(y);
157  }
158 
159 
160 public:
161  // OTHERS methods
162 
163 
164 
165 };
166 
167 #endif
This class is the base class of all the parser package.
Definition: RAND_Object.h:24
virtual tMemSize getContentsMemorySize() const override
return nthe memory size of the included associations
Definition: RAND_Object.h:69
This class generates a distribution implemented in class G with internal implementation class I with ...
Definition: RAND_RandomNumberDistribution.h:17
T maxValue() const
return the max value
Definition: RAND_RandomNumberDistribution.h:135
tReal cdf(const T &x) const
return the cumulative density function
Definition: RAND_RandomNumberDistribution.h:149
virtual tMemSize getContentsMemorySize() const
return nthe memory size of the included associations
Definition: RAND_RandomNumberDistribution.h:88
T minValue() const
return the min value
Definition: RAND_RandomNumberDistribution.h:130
void initialize(I &dist)
initiliaze generator
Definition: RAND_RandomNumberDistribution.h:103
T random(RAND_RandomNumberGenerator< T1, G, D1 > &generator)
random a number
Definition: RAND_RandomNumberDistribution.h:116
virtual ~RAND_RandomNumberDistribution(void)
destroy
Definition: RAND_RandomNumberDistribution.h:53
RAND_RandomNumberDistribution(void)
create
Definition: RAND_RandomNumberDistribution.h:42
tReal icdf(const T &y) const
return the inverse of the cumulative density function
Definition: RAND_RandomNumberDistribution.h:155
virtual tMemSize getMemorySize() const
return the memory size of the class and the memory size of all its attributes/associations
Definition: RAND_RandomNumberDistribution.h:76
tReal pdf(const T &x) const
return the probility density function
Definition: RAND_RandomNumberDistribution.h:143
I & getDistribution()
get distribution
Definition: RAND_RandomNumberDistribution.h:124
This class generates a random number of type T generator with internal implemented class I implemente...
Definition: RAND_RandomNumberGenerator.h:14
I & getGenerator()
get the internal random nulber generator
Definition: RAND_RandomNumberGenerator.h:140