13 #ifndef ROOT_Math_MersenneTwisterEngine
14 #define ROOT_Math_MersenneTwisterEngine
50 class MersenneTwisterEngine :
public TRandomEngine {
55 typedef TRandomEngine BaseType;
56 typedef uint32_t Result_t;
57 typedef uint32_t StateInt_t;
60 MersenneTwisterEngine(uint32_t seed=4357) {
64 virtual ~MersenneTwisterEngine() {}
66 void SetSeed(Result_t seed);
68 virtual double Rndm() {
71 inline double operator() () {
return Rndm_impl(); }
74 return IntRndm_impl();
78 static unsigned int MinInt() {
return 0; }
80 static unsigned int MaxInt() {
return 0xffffffff; }
82 static int Size() {
return kSize; }
84 static std::string Name() {
85 return "MersenneTwisterEngine";
91 void SetState(
const std::vector<uint32_t> & state) {
92 for (
unsigned int i = 0; i < kSize; ++i)
97 void GetState(std::vector<uint32_t> & state) {
99 for (
unsigned int i = 0; i < kSize; ++i)
103 int Counter()
const {
return fCount624; }
109 uint32_t IntRndm_impl();