Simpact Cyan
Population based event driven simulation using mNRM
probabilitydistribution2d.h
Go to the documentation of this file.
1 #ifndef PROBABILITYDISTRIBUTION2D_H
2 
3 #define PROBABILITYDISTRIBUTION2D_H
4 
9 #include "point2d.h"
10 #include <assert.h>
11 #include <limits>
12 
14 
18 {
19 public:
20  ProbabilityDistribution2D(GslRandomNumberGenerator *pRng, bool supportsMarginalsAndConditionals)
21  { assert(pRng != 0); m_pRng = pRng; m_supportsMarginalsAndConditionals = supportsMarginalsAndConditionals; }
22  virtual ~ProbabilityDistribution2D() { }
23 
26  virtual Point2D pickPoint() const = 0;
27 
28  bool hasMarginalsAndConditionals() const { return m_supportsMarginalsAndConditionals; }
29  virtual double pickMarginalX() const { return std::numeric_limits<double>::quiet_NaN(); }
30  virtual double pickMarginalY() const { return std::numeric_limits<double>::quiet_NaN(); }
31  virtual double pickConditionalOnX(double x) const { return std::numeric_limits<double>::quiet_NaN(); }
32  virtual double pickConditionalOnY(double y) const { return std::numeric_limits<double>::quiet_NaN(); }
33 
34  GslRandomNumberGenerator *getRandomNumberGenerator() const { return m_pRng; }
35 private:
36  mutable GslRandomNumberGenerator *m_pRng;
37  bool m_supportsMarginalsAndConditionals;
38 };
39 
40 #endif // PROBABILITYDISTRIBUTION2D_H
virtual Point2D pickPoint() const =0
Pick a point according to a specific distrubution, specified in a subclass of ProbabilityDistribution...
This class allows you to generate random numbers, and uses the GNU Scientific Library for this...
Definition: gslrandomnumbergenerator.h:16
Abstract base class for 2D probability distribution implementations so that they can be used intercha...
Definition: probabilitydistribution2d.h:17