// AbstractRandom.h #pragma once #include "UncertainityOptions.h" #include "MatData.h" #include <random> namespace math1d_cl { class AbstractRandom { public: AbstractRandom(UncertainityOptions options); virtual double getRandDouble(double min, double max); virtual void fillRandom(math1d_cl::precipitationsVector &prec, double deviation) = 0; void seed(); protected: UncertainityOptions m_options; // Uncertainity options std::mt19937_64 m_rand; // Mersenne Twister generator }; }