00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef RANDOMIZER_H
00016 #define RANDOMIZER_H
00017
00018 #include "pandabase.h"
00019 #include "mersenne.h"
00020
00021 #include <time.h>
00022
00023
00024
00025
00026
00027 class EXPCL_PANDA_MATHUTIL Randomizer {
00028 PUBLISHED:
00029 INLINE Randomizer(unsigned long seed = 0);
00030 INLINE Randomizer(const Randomizer ©);
00031 INLINE void operator = (const Randomizer ©);
00032
00033 INLINE int random_int(int range);
00034 INLINE double random_real(double range);
00035 INLINE double random_real_unit();
00036
00037 INLINE static unsigned long get_next_seed();
00038 INLINE unsigned long get_seed();
00039
00040 private:
00041 Mersenne _mersenne;
00042 static Mersenne _next_seed;
00043 static bool _got_first_seed;
00044 };
00045
00046 #include "randomizer.I"
00047
00048 #endif