RandLib 2.0.0
Probability distributions, fitting, and heavy-tail tools for C++20
Loading...
Searching...
No Matches
randlib::DiscreteBivariateDistribution< T1, T2, IntType > Class Template Referenceabstract

The DiscreteBivariateDistribution class
Abstract class for all bivariate probability distributions with marginal discrete distributions. More...

#include <discrete_bivariate.hpp>

Inheritance diagram for randlib::DiscreteBivariateDistribution< T1, T2, IntType >:
Collaboration diagram for randlib::DiscreteBivariateDistribution< T1, T2, IntType >:

Public Member Functions

virtual ~DiscreteBivariateDistribution ()
 
virtual double P (const Pair< IntType > &point) const =0
 
virtual double logP (const Pair< IntType > &point) const =0
 
- Public Member Functions inherited from randlib::BivariateDistribution< T1, T2, IntType >
virtual ~BivariateDistribution ()
 
Pair< IntType > MinValue () const override
 
Pair< IntType > MaxValue () const override
 
virtual LongDoublePair Mean () const final
 
virtual LongDoubleTriplet Covariance () const final
 
virtual long double Correlation () const=0
 
virtual std::pair< T1, T2 > GetMarginalDistributions () const final
 
virtual Pair< IntType > Mode () const=0
 
- Public Member Functions inherited from randlib::ProbabilityDistribution< T >
virtual ~ProbabilityDistribution ()=default
 
virtual std::string Name () const =0
 
virtual double F (const T &x) const =0
 
void CumulativeDistributionFunction (std::span< const T > x, std::span< double > y) const
 
virtual double S (const T &x) const
 
void SurvivalFunction (std::span< const T > x, std::span< double > y) const
 
template<std::uniform_random_bit_generator G>
T operator() (G &g) const
 Draws a variate with the given engine through the virtual interface.
 
T Variate () const
 Uses the engine of this object, so it is not thread-safe for one object; use operator() with one engine per thread instead.
 
void Sample (std::span< T > outputData) const
 Fills the output with variates drawn with the engine of this object.
 
template<std::uniform_random_bit_generator G>
void Sample (G &g, std::span< T > outputData) const
 Fills the output with variates drawn with the given engine.
 
void Reseed (std::uint64_t seed)
 

Protected Member Functions

 DiscreteBivariateDistribution ()
 
- Protected Member Functions inherited from randlib::BivariateDistribution< T1, T2, IntType >
 BivariateDistribution ()
 
- Protected Member Functions inherited from randlib::ProbabilityDistribution< T >
std::string toStringWithPrecision (const double a_value, const int n=6) const
 
 ProbabilityDistribution ()=default
 
DefaultEngine & engine () const
 
virtual T variate (detail::EngineRef g) const =0
 Every concrete distribution implements this by calling its templated operator()
 
virtual void sample (detail::EngineRef g, std::span< T > outputData) const
 Fills the output with variate(g); distributions with a faster bulk algorithm override it.
 
fit_error fitError (FitErrorCode code, const std::string &explanation) const
 

Additional Inherited Members

- Public Types inherited from randlib::ProbabilityDistribution< T >
using value_type = T
 
- Protected Attributes inherited from randlib::BivariateDistribution< T1, T2, IntType >
T1 X
 1st marginal distributions
 
T2 Y
 2nd marginal distributions
 
- Static Protected Attributes inherited from randlib::ProbabilityDistribution< T >
static constexpr size_t MAX_ITER_REJECTION = detail::MAX_ITER_REJECTION
 MAX_ITER_REJECTION upper boundary for maximum amount of iterations in rejection methods one thousand should be enough to be sure there is a bug (or rejection method is too slow to be used)
 
static constexpr char POSITIVITY_VIOLATION [] = "All elements should be positive"
 
static constexpr char NON_NEGATIVITY_VIOLATION [] = "All elements should be non-negative"
 
static constexpr char UPPER_LIMIT_VIOLATION [] = "No element should be greater than "
 
static constexpr char LOWER_LIMIT_VIOLATION [] = "No element should be smaller than "
 

Detailed Description

template<class T1, class T2, typename IntType>
class randlib::DiscreteBivariateDistribution< T1, T2, IntType >

The DiscreteBivariateDistribution class
Abstract class for all bivariate probability distributions with marginal discrete distributions.

Constructor & Destructor Documentation

◆ DiscreteBivariateDistribution()

template<class T1 , class T2 , typename IntType >
randlib::DiscreteBivariateDistribution< T1, T2, IntType >::DiscreteBivariateDistribution ( )
inlineprotected

◆ ~DiscreteBivariateDistribution()

template<class T1 , class T2 , typename IntType >
virtual randlib::DiscreteBivariateDistribution< T1, T2, IntType >::~DiscreteBivariateDistribution ( )
inlinevirtual

Member Function Documentation

◆ logP()

template<class T1 , class T2 , typename IntType >
virtual double randlib::DiscreteBivariateDistribution< T1, T2, IntType >::logP ( const Pair< IntType > &  point) const
pure virtual

◆ P()

template<class T1 , class T2 , typename IntType >
virtual double randlib::DiscreteBivariateDistribution< T1, T2, IntType >::P ( const Pair< IntType > &  point) const
pure virtual

The documentation for this class was generated from the following file: