Back to Geometrically-distributed random numbers
// Description: Geometrically-distributed random numbers
#ifndef PASTELSYS_RANDOM_GEOMETRIC_H
#define PASTELSYS_RANDOM_GEOMETRIC_H
#include "pastel/sys/mytypes.h"
namespace Pastel
{
    //! Returns a geometrically-distributed random number.
    /*!
   The returned random number is distributed as the number 
   of failures before the first success in a Bernoulli process;
   its support is {0, 1, 2, ...}.
   Preconditions:
   success > 0
   success < 1
   */
    template <typename Real>
    integer randomGeometric(
        const NoDeduction<Real>& success);
    //! Probability mass function of the geometric distribution.
    /*!
   Preconditions:
   k >= 0
   success > 0
   success < 1
   */
    template <typename Real>
    Real geometricPdf(
        const NoDeduction<Real>& k,
        const NoDeduction<Real>& success);
    //! Cumulative distribution function of the geometric distribution.
    /*!
   Preconditions:
   k >= 0
   success > 0
   success < 1
   */
    template <typename Real>
    Real geometricCdf(
        const NoDeduction<Real>& k,
        const NoDeduction<Real>& success);
}
#include "pastel/sys/random/random_geometric.hpp"
#endif