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

The BivariateDistribution class
Abstract class for all bivariate probability distributions. More...

#include <bivariate.hpp>

Inheritance diagram for randlib::BivariateDistribution< T1, T2, T >:
Collaboration diagram for randlib::BivariateDistribution< T1, T2, T >:

Public Member Functions

virtual ~BivariateDistribution ()
 
Pair< T > MinValue () const override
 
Pair< T > 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< T > Mode () const =0
 
- Public Member Functions inherited from randlib::ProbabilityDistribution< Pair< T > >
virtual ~ProbabilityDistribution ()=default
 
virtual std::string Name () const=0
 
virtual double F (const Pair< T > &x) const=0
 
void CumulativeDistributionFunction (std::span< const Pair< T > > x, std::span< double > y) const
 
virtual double S (const Pair< T > &x) const
 
void SurvivalFunction (std::span< const Pair< T > > x, std::span< double > y) const
 
Pair< T > operator() (G &g) const
 Draws a variate with the given engine through the virtual interface.
 
Pair< 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< Pair< T > > outputData) const
 Fills the output with variates drawn with the engine of this object.
 
void Sample (G &g, std::span< Pair< T > > outputData) const
 Fills the output with variates drawn with the given engine.
 
void Reseed (std::uint64_t seed)
 

Protected Member Functions

 BivariateDistribution ()
 
- Protected Member Functions inherited from randlib::ProbabilityDistribution< Pair< T > >
std::string toStringWithPrecision (const double a_value, const int n=6) const
 
 ProbabilityDistribution ()=default
 
DefaultEngine & engine () const
 
virtual Pair< 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< Pair< 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
 

Protected Attributes

T1 X {}
 1st marginal distributions
 
T2 Y {}
 2nd marginal distributions
 

Additional Inherited Members

- Public Types inherited from randlib::ProbabilityDistribution< Pair< T > >
using value_type = Pair< T >
 
- Static Protected Attributes inherited from randlib::ProbabilityDistribution< Pair< T > >
static constexpr size_t 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 []
 
static constexpr char NON_NEGATIVITY_VIOLATION []
 
static constexpr char UPPER_LIMIT_VIOLATION []
 
static constexpr char LOWER_LIMIT_VIOLATION []
 

Detailed Description

template<class T1, class T2, typename T>
class randlib::BivariateDistribution< T1, T2, T >

The BivariateDistribution class
Abstract class for all bivariate probability distributions.

Constructor & Destructor Documentation

◆ BivariateDistribution()

template<class T1 , class T2 , typename T >
randlib::BivariateDistribution< T1, T2, T >::BivariateDistribution ( )
inlineprotected

◆ ~BivariateDistribution()

template<class T1 , class T2 , typename T >
virtual randlib::BivariateDistribution< T1, T2, T >::~BivariateDistribution ( )
inlinevirtual

Member Function Documentation

◆ Correlation()

template<class T1 , class T2 , typename T >
virtual long double randlib::BivariateDistribution< T1, T2, T >::Correlation ( ) const
pure virtual

◆ Covariance()

template<class T1 , class T2 , typename T >
LongDoubleTriplet randlib::BivariateDistribution< T1, T2, T >::Covariance ( ) const
finalvirtual

◆ GetMarginalDistributions()

template<class T1 , class T2 , typename T >
std::pair< T1, T2 > randlib::BivariateDistribution< T1, T2, T >::GetMarginalDistributions ( ) const
finalvirtual

◆ MaxValue()

template<class T1 , class T2 , typename T >
Pair< T > randlib::BivariateDistribution< T1, T2, T >::MaxValue ( ) const
inlineoverridevirtual
Returns
maximum possible value that can be achieved by random variable

Implements randlib::ProbabilityDistribution< Pair< T > >.

◆ Mean()

template<class T1 , class T2 , typename T >
LongDoublePair randlib::BivariateDistribution< T1, T2, T >::Mean ( ) const
finalvirtual

◆ MinValue()

template<class T1 , class T2 , typename T >
Pair< T > randlib::BivariateDistribution< T1, T2, T >::MinValue ( ) const
inlineoverridevirtual
Returns
minimum possible value that can be achieved by random variable

Implements randlib::ProbabilityDistribution< Pair< T > >.

◆ Mode()

template<class T1 , class T2 , typename T >
virtual Pair< T > randlib::BivariateDistribution< T1, T2, T >::Mode ( ) const
pure virtual

Member Data Documentation

◆ X

template<class T1 , class T2 , typename T >
T1 randlib::BivariateDistribution< T1, T2, T >::X {}
protected

1st marginal distributions

◆ Y

template<class T1 , class T2 , typename T >
T2 randlib::BivariateDistribution< T1, T2, T >::Y {}
protected

2nd marginal distributions


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