00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef _Random_h
00018 #define _Random_h
00019
00020 #include <spl/Debug.h>
00021 #include <spl/types.h>
00022
00032 class Random
00033 {
00034 protected:
00035 uint32 combo_x;
00036 uint32 combo_y;
00037 uint32 combo_z;
00038 uint32 combo_v;
00039
00040 public:
00041 Random();
00042 Random(int seed);
00043
00044 inline Random(const Random& rnd)
00045 : combo_x(rnd.combo_x),
00046 combo_y(rnd.combo_y),
00047 combo_z(rnd.combo_v),
00048 combo_v(rnd.combo_v)
00049 {
00050 }
00051
00052 inline Random& operator =(const Random& rnd)
00053 {
00054 combo_x = rnd.combo_x;
00055 combo_y = rnd.combo_y;
00056 combo_z = rnd.combo_z;
00057 combo_v = rnd.combo_v;
00058
00059 return *this;
00060 }
00061
00062 int Next();
00063 int Next(int max);
00064 int Next(int min, int max);
00065 void NextBytes(byte *data, int len);
00066 int NextInt();
00067
00068 double NextDouble();
00069 };
00070
00073 #endif