| 12
 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