Line data Source code
1 : /*! 2 : * \file 3 : * \brief Class module::Source_random. 4 : */ 5 : #ifndef SOURCE_RANDOM_HPP_ 6 : #define SOURCE_RANDOM_HPP_ 7 : 8 : #include <random> 9 : 10 : #include "Module/Stateful/Source/Source.hpp" 11 : 12 : namespace spu 13 : { 14 : namespace module 15 : { 16 : template<typename B = int> 17 : class Source_random : public Source<B> 18 : { 19 : private: 20 : std::mt19937 rd_engine; // Mersenne Twister 19937 21 : // std::minstd_rand rd_engine; // LCG 22 : std::uniform_int_distribution<short> uniform_dist; 23 : 24 : public: 25 : Source_random(const int max_data_size, const int seed = 0); 26 : 27 0 : virtual ~Source_random() = default; 28 : 29 : virtual Source_random<B>* clone() const; 30 : 31 : virtual void set_seed(const int seed); 32 : 33 : protected: 34 : void _generate(B* out_data, const size_t frame_id); 35 : }; 36 : } 37 : } 38 : 39 : #endif /* SOURCE_RANDOM_HPP_ */