Back to Exponential-distributed random numbers
// Description: Exponential-distributed random numbers
#ifndef PASTELSYS_RANDOM_EXPONENTIAL_H
#define PASTELSYS_RANDOM_EXPONENTIAL_H
#include "pastel/sys/mytypes.h"
#include "pastel/sys/vector.h"
namespace Pastel
{
//! Returns an exponentially-distributed random real.
/*!
This function assumes mean = 1.
*/
template <typename Real>
Real randomExponential();
//! Returns an exponentially-distributed random real.
/*!
Precondition:
mean > 0
This is a convenience function that calls
randomExponential<Real>() / mean;
*/
template <typename Real>
Real randomExponential(
const NoDeduction<Real>& mean);
//! Returns a random vector exponentially distributed in each component.
template <typename Real, integer N>
Vector<Real, N> randomExponentialVector();
//! Returns a random vector exponentially distributed in each component.
template <typename Real, integer N>
Vector<Real, N> randomExponentialVector(integer dimension);
//! Probability density function of the Exponential distribution.
/*!
This function assumes mean = 1.
*/
template <typename Real>
Real exponentialPdf(
const NoDeduction<Real>& x);
//! Probability density function of the Exponential distribution.
/*!
Precondition:
mean > 0
*/
template <typename Real>
Real exponentialPdf(
const NoDeduction<Real>& x,
const NoDeduction<Real>& mean);
}
#include "pastel/sys/random/random_exponential.hpp"
#endif