DiscreteDistribution

class DiscreteDistribution

The generic cpplex discrete distribution type.

This module implements various complex discrete distributions.

Defined in header <DiscreteDistribution/DiscreteDistribution.hpp>.

Note

All complex discrete distribution classes make the assumption that the real and complex components are an independent, joint distribution.

Functions

virtual constexpr double pmf(const Complex &z) const noexcept = 0

The PMF of a distribution.

virtual constexpr double cdf(const Complex &z) const noexcept = 0

The CDF of a distribution.

inline double logpmf(const Complex &z) const noexcept

The natural log of the PMF of a distribution.

inline double logcdf(const Complex &z) const noexcept

The natural log of the CDF of a distribution.

virtual constexpr std::vector<Complex> rand(const int numSamples) const noexcept = 0

Samples from a distribution.

virtual constexpr double entropy() const noexcept = 0

Returns the entropy of a distribution.

Distributions

class Bernoulli : public DiscreteDistribution
class Binomial : public DiscreteDistribution
class Geometric : public DiscreteDistribution
class NegativeBinomial : public DiscreteDistribution
class Poisson : public DiscreteDistribution

Example

// Polymorphic implementation
DiscreteDistribution* dist;
Complex lambda = 5 + 5_j;

Complex z = 3 + 3_j;

Poisson poissonDist(lambda);
dist = &poissonDist;
std::cout << dist->pmf(z) << "\n";

Output:

0.0197048