00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef RAND_H
00021 #define RAND_H
00022
00023 #include <openbabel/babelconfig.h>
00024
00025 namespace OpenBabel
00026 {
00027
00028
00029
00030
00031
00034 typedef struct
00035 {
00036 unsigned int hi;
00037 unsigned int lo;
00038 }
00039 DoubleType;
00040
00041 OBAPI void DoubleMultiply( unsigned int,unsigned int,DoubleType*);
00042 OBAPI void DoubleAdd( DoubleType*,unsigned int);
00043 OBAPI unsigned int DoubleModulus( DoubleType*,unsigned int);
00044
00047
00068 class OBAPI OBRandom
00069 {
00070 DoubleType d;
00071 unsigned int m,a,c;
00072 unsigned int p;
00073 unsigned int i;
00074 unsigned int x;
00075 bool OBRandomUseSysRand;
00076
00077 public:
00079 OBRandom(bool useSys= false);
00081 void Seed(int seed)
00082 {
00083 x = seed;
00084 }
00088 void TimeSeed();
00090 int NextInt();
00092 double NextFloat();
00093 };
00094
00095 }
00096
00097 #endif // RAND_H
00098