Marmote Core
The project aims at realizing the prototype of a software environment dedicated to modeling with Markov chains.
|
The general discrete distribution with finite support. More...
#include <discreteDistribution.h>
Public Member Functions | |
discreteDistribution (int sz, double *vals, double *probas) | |
Constructor for a general discrete distribution from arrays. The arrays are ***copied***, not taken as pointer. The mean is calculated at creation. More... | |
discreteDistribution (int sz, char *name) | |
Constructor for a general discrete distribution from a file. The file is assumed to contain only the probas. The values are arbitrarily chosen between 0 and sz-1. The mean is calculated at creation. More... | |
~discreteDistribution () | |
Destructor for a general discrete distribution. The convention is that internal arrays for values and probas are freed at this moment. If they are useful for something else, they sould be copied. More... | |
double | getProbaByIndex (int i) |
Read accessor for the elements of the probas array. This is a pseudo-accessor since it performs additional checks. More... | |
double | getProba (double value) |
Computes the probability of a particular value. The tolerance VALUE_TOLERANCE is applied to match values. More... | |
double | getValue (int i) |
Read accessor for the values. This is a pseudo-accessor since it performs additional checks. More... | |
int | nbVals () |
Read accessor to the number of values in the distribution. More... | |
bool | setProba (int i, double v) |
Write accessor for the probas. This is a pseudo-accessor since it performs additional checks. More... | |
double | mean () |
Calculation of the mean. Returns the value since it is pre-computed. More... | |
double | rate () |
Calculation of the rate, which is the inverse of the mean. If the mean is 0, the value INFINITE_RATE is returned. More... | |
double | moment (int order) |
Computing the moments of the distribution. More... | |
double | laplace (double s) |
computing the Laplace transform of the distribution at real point More... | |
double | dLaplace (double s) |
computing the derivative of the Laplace transform at real points More... | |
double | cdf (double x) |
Computation of the cumulative density function at some real point x. More... | |
bool | hasMoment (int order) |
Test of existence of a moment. These distributions always have one. More... | |
discreteDistribution * | rescale (double factor) |
rescaling a distribution by some real factor. Not all distributions allow this for any real factor. If the operation fails, or if the factor is 1.0, a copy of the distribution should be returned (not by using the copy() function). More... | |
discreteDistribution * | copy () |
copying a distribution. Typically implemented as rescale(1.0). More... | |
double | sample () |
Sampling from the law This is the straightforward, non optimized, linear-time algorithm. More... | |
double | distanceL2 (discreteDistribution *d) |
Computes the L2 distance between two distributions. In case of incompatible or infinite sizes, a negative number is returned. More... | |
double | distanceL1 (discreteDistribution *d) |
Computes the L1 distance between this distribution and another one. In case of incompatible or infinite sizes, a negative number is returned. More... | |
double | distanceLinfinity (discreteDistribution *d) |
Computes the L-infinity distance between two distributions. In case of incompatible or infinite sizes, a negative number is returned. More... | |
std::string | toString () |
Printing a representation of the law into a string. More... | |
void | write (FILE *out, int mode) |
Printing a representation of the law. More... | |
![]() | |
virtual | ~Distribution () |
Standard destructor. More... | |
std::string | name () |
Read accessor to the type name of the distribution. More... | |
double | variance () |
Computing the variance of the random variable: the second moment minus the square of the first moment. Variance is the square of the coefficient of variation. The Distribution class offers a default implementation. More... | |
double | ccdf (double x) |
computing the complementary cumulative distributon function (or tail) at some real point x. This is the probability that the random variable is strictly larger than x. The Distribution class offers a default implementation. More... | |
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 been already allocated) passed as a parameter. The Distribution class offers the default implementation with repeated call to sample(). More... | |
virtual double | distanceL1 (Distribution *d) |
Computing generally the L1 distance between distributions. More... | |
virtual bool | hasProperty (std::string pro) |
Property test function. Current properties are: More... | |
void | fprint () |
write on stdout with NORMAL_PRINT_MODE More... | |
Protected Member Functions | |
discreteDistribution (int sz) | |
Constructor for a general discrete distribution from its size. Arrays are created to this size but not initialized. DANGEROUS to use since methods cannot check whether these arrays are correct or not. Use reserved to sub-types such as diracDistribution. More... | |
Protected Attributes | |
int | _nbVals |
double * | _values |
double * | _probas |
![]() | |
std::string | _name |
double | _mean |
Additional Inherited Members | |
![]() | |
static double | u_0_1 (void) |
static double | exponential (double mean) |
![]() | |
static const double | VALUE_TOLERANCE = 1.0e-8 |
The general discrete distribution with finite support.
discreteDistribution::discreteDistribution | ( | int | sz, |
double * | vals, | ||
double * | probas | ||
) |
Constructor for a general discrete distribution from arrays. The arrays are ***copied***, not taken as pointer. The mean is calculated at creation.
sz | number of values/probas |
vals | array of values |
probas | probability vector |
discreteDistribution::discreteDistribution | ( | int | sz, |
char * | name | ||
) |
Constructor for a general discrete distribution from a file. The file is assumed to contain only the probas. The values are arbitrarily chosen between 0 and sz-1. The mean is calculated at creation.
sz | number of values/probas |
name | the name of the file |
|
protected |
Constructor for a general discrete distribution from its size. Arrays are created to this size but not initialized. DANGEROUS to use since methods cannot check whether these arrays are correct or not. Use reserved to sub-types such as diracDistribution.
sz | number of values/probas |
discreteDistribution::~discreteDistribution | ( | ) |
Destructor for a general discrete distribution. The convention is that internal arrays for values and probas are freed at this moment. If they are useful for something else, they sould be copied.
|
virtual |
Computation of the cumulative density function at some real point x.
x |
x | value at which the CDF is computed |
Implements Distribution.
Reimplemented in uniformDiscreteDistribution.
|
virtual |
copying a distribution. Typically implemented as rescale(1.0).
Copying the law.
Implements Distribution.
Reimplemented in uniformDiscreteDistribution.
double discreteDistribution::distanceL1 | ( | discreteDistribution * | d | ) |
Computes the L1 distance between this distribution and another one. In case of incompatible or infinite sizes, a negative number is returned.
d |
d | the second distribution |
double discreteDistribution::distanceL2 | ( | discreteDistribution * | d | ) |
Computes the L2 distance between two distributions. In case of incompatible or infinite sizes, a negative number is returned.
d |
d | the second distribution |
double discreteDistribution::distanceLinfinity | ( | discreteDistribution * | d | ) |
Computes the L-infinity distance between two distributions. In case of incompatible or infinite sizes, a negative number is returned.
d |
d | the second distribution |
|
virtual |
computing the derivative of the Laplace transform at real points
Computation of the derivative of the Laplace transform at some real point s.
s | the value at which to compute |
s | value at which the derivative is computed |
Implements Distribution.
Reimplemented in uniformDiscreteDistribution.
double discreteDistribution::getProba | ( | double | value | ) |
Computes the probability of a particular value. The tolerance VALUE_TOLERANCE is applied to match values.
value | the value at which the proba is computed |
double discreteDistribution::getProbaByIndex | ( | int | i | ) |
Read accessor for the elements of the probas array. This is a pseudo-accessor since it performs additional checks.
i | the index of the entry |
double discreteDistribution::getValue | ( | int | i | ) |
Read accessor for the values. This is a pseudo-accessor since it performs additional checks.
i | the index of the entry |
|
virtual |
Test of existence of a moment. These distributions always have one.
order | order of the moment |
Implements Distribution.
Reimplemented in uniformDiscreteDistribution.
|
virtual |
computing the Laplace transform of the distribution at real point
Computation of the Laplace transform at some real point s.
s | the value at which to compute |
s | value at which the derivative is computed |
Implements Distribution.
Reimplemented in uniformDiscreteDistribution.
|
inlinevirtual |
Calculation of the mean. Returns the value since it is pre-computed.
Implements Distribution.
Reimplemented in uniformDiscreteDistribution.
|
virtual |
Computing the moments of the distribution.
order | the order of the moment to be computed |
Implements Distribution.
Reimplemented in uniformDiscreteDistribution.
|
inline |
Read accessor to the number of values in the distribution.
|
virtual |
Calculation of the rate, which is the inverse of the mean. If the mean is 0, the value INFINITE_RATE is returned.
Implements Distribution.
Reimplemented in uniformDiscreteDistribution.
|
virtual |
rescaling a distribution by some real factor. Not all distributions allow this for any real factor. If the operation fails, or if the factor is 1.0, a copy of the distribution should be returned (not by using the copy() function).
Rescaling the law X by some real factor f.
factor | the real factor to be used |
factor | the factor f |
Implements Distribution.
Reimplemented in uniformDiscreteDistribution.
|
virtual |
Sampling from the law This is the straightforward, non optimized, linear-time algorithm.
Implements Distribution.
Reimplemented in uniformDiscreteDistribution.
bool discreteDistribution::setProba | ( | int | i, |
double | v | ||
) |
Write accessor for the probas. This is a pseudo-accessor since it performs additional checks.
i | the index of the entry |
v | the value to be given to the entry |
|
virtual |
Printing a representation of the law into a string.
Implements Distribution.
Reimplemented in uniformDiscreteDistribution.
|
virtual |
Printing a representation of the law.
out | |
mode |
out | file descriptor of the output stream |
mode | representation for the output |
Implements Distribution.
Reimplemented in uniformDiscreteDistribution.
|
protected |
number of values in the distribution
|
protected |
table of probabilities
|
protected |
table of values