Marmote Core
The project aims at realizing the prototype of a software environment dedicated to modeling with Markov chains.
uniformDistribution.h
1 /* Marmote is free software: you can redistribute it and/or modify
2 it under the terms of the GNU General Public License as published by
3 the Free Software Foundation, either version 3 of the License, or
4 (at your option) any later version.
5 
6 Marmote is distributed in the hope that it will be useful,
7 but WITHOUT ANY WARRANTY; without even the implied warranty of
8 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9 GNU General Public License for more details.
10 
11 You should have received a copy of the GNU General Public License
12 along with Marmote. If not, see <http://www.gnu.org/licenses/>.
13 
14 Copyright 2015 Alain Jean-Marie, Jean-Michel Fourneau, Jean-Marc Vincent, Issam Rabhi */
15 
16 #ifndef uniformDistribution_H
17 #define uniformDistribution_H
18 
19 #include "Distribution.h"
20 
25 class uniformDistribution : public virtual Distribution {
26 
27  public:
31  uniformDistribution( double, double );
32 
33 private:
34  double _valInf;
35  double _valSup;
36  double _span;
37  bool _isConstant;
39 public:
40  // accessors to specific variables
46  double valInf();
52  double valSup();
53 
54  public: // probabilistic member functions
58  double mean();
62  double rate();
66  double moment( int order );
70  double variance();
74  double laplace( double s );
78  double dLaplace( double s ); // derivative of the Laplace transform
82  double cdf( double x );
86  double ccdf( double x );
90  bool hasMoment( int order);
91 
95  uniformDistribution *rescale( double factor );
103  double sample();
107  void iidSample( int n, double* s );
108 
109  public:
113  std::string toString();
117  void write( FILE *out, int mode );
118 
119 };
120 
121 #endif // uniformDistribution_H
double valInf()
Read accessor to the lower end of the interval.
double ccdf(double x)
computing the complementary cumulative distributon function (or tail) at some real point x...
void iidSample(int n, double *s)
drawing an i.i.d. sample from the distribution. The result is returned in an array (that must have be...
Definition: uniformDistribution.cpp:224
uniformDistribution(double, double)
standard constructor from extremities of the interval
Definition: uniformDistribution.cpp:28
A class for representing probability distributions.
Definition: Distribution.h:44
std::string toString()
an utility to convert the distribution into a string.
Definition: uniformDistribution.cpp:177
void write(FILE *out, int mode)
an utility to write the distribution to some file, according to some format.
Definition: uniformDistribution.cpp:164
double cdf(double x)
computing the cumulative distribution function at some real point x. This is the probability that the...
Definition: uniformDistribution.cpp:146
The continuous uniform distribution over some interval.
Definition: uniformDistribution.h:25
double moment(int order)
Computing the moments of the distribution.
Definition: uniformDistribution.cpp:75
double rate()
computing the "rate", defined as the inverse of the mean
Definition: uniformDistribution.cpp:57
uniformDistribution * rescale(double factor)
rescaling a distribution by some real factor. Not all distributions allow this for any real factor...
Definition: uniformDistribution.cpp:191
double variance()
Computing the variance of the random variable: the second moment minus the square of the first moment...
uniformDistribution * copy()
copying a distribution. Typically implemented as rescale(1.0).
Definition: uniformDistribution.cpp:204
double dLaplace(double s)
computing the derivative of the Laplace transform at real points
Definition: uniformDistribution.cpp:124
bool hasMoment(int order)
test for the existence of moments of any order
Definition: uniformDistribution.cpp:96
double valSup()
Read accessor to the upper end of the interval.
double mean()
computing the mathematical expectation or mean
Definition: uniformDistribution.cpp:48
double laplace(double s)
computing the Laplace transform of the distribution at real point
Definition: uniformDistribution.cpp:104
double sample()
drawing a (pseudo)random value according to the distribution.
Definition: uniformDistribution.cpp:214