1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
class NormalDistribution
{
private:
double m_Mean;
double m_StdDev;
boost::lagged_fibonacci19937* engine;
boost::variate_generator<boost::lagged_fibonacci19937&, boost::normal_distribution<double> >* bind;
public:
NormalDistribution(const double& _Mean, const double _StdDev)
{
m_Mean = _Mean;
m_StdDev = _StdDev;
bind = NULL;
engine = new boost::lagged_fibonacci19937( time(NULL) );
}
~NormalDistribution()
{
delete engine;
delete bind;
}
void SetMean(const double& _Mean) {m_Mean = _Mean;}
void SetStdDev(const double& _StdDev) {m_StdDev = _StdDev;}
inline double GetMean() const { return m_Mean; }
inline double GetStdDev() const { return m_StdDev; }
void Prepare()
{
boost::normal_distribution<double> generator(m_Mean,m_StdDev);
if(bind)
delete bind;
bind = new boost::variate_generator<boost::lagged_fibonacci19937&, boost::normal_distribution<double> >(*engine,generator);
}
double operator()(void)
{
return (*bind)();
}
}; |
Partager