Random.h
Go to the documentation of this file.
1 #ifndef MiscLib__RANDOM_HEADER__
2 #define MiscLib__RANDOM_HEADER__
3 /*
4  * random.h -- Random number generation interface
5  *
6  * for further details see Knuth TAOCP Vol.2 pp. 186f
7  *
8  */
9 
10 #define MiscLib_RN_BUFSIZE 500
11 #define MiscLib_RN_RAND_MOD (1L << 30)
12 #define MiscLib_RN_CONST 6180339887L
13 
14 namespace MiscLib
15 {
16  extern size_t rn_buf[];
17  extern size_t rn_point;
18  void rn_setseed(size_t);
19  size_t rn_refresh(void);
20 
21  inline size_t
23  {
24  size_t idx = rn_point++;
25  return (MiscLib_RN_BUFSIZE > idx) ? rn_buf[idx] : rn_refresh();
26  }
27 
28  inline size_t
29  rn_urand(size_t m)
30  {
31  return rn_rand() % m;
32  }
33 
34  inline float
36  {
37  return (float)rn_rand() / MiscLib_RN_RAND_MOD;
38  }
39 }; // namespace MiscLib
40 
41 #endif
MiscLib_RN_BUFSIZE
#define MiscLib_RN_BUFSIZE
Definition: Random.h:10
MiscLib::rn_point
size_t rn_point
Definition: Random.cpp:24
MiscLib_RN_RAND_MOD
#define MiscLib_RN_RAND_MOD
Definition: Random.h:11
MiscLib::rn_frand
float rn_frand()
Definition: Random.h:35
MiscLib::rn_setseed
void rn_setseed(size_t)
Definition: Random.cpp:27
MiscLib::rn_rand
size_t rn_rand()
Definition: Random.h:22
MiscLib
Definition: AlignedAllocator.h:12
MiscLib::rn_buf
size_t rn_buf[]
Definition: Random.cpp:23
MiscLib::rn_refresh
size_t rn_refresh(void)
Definition: Random.cpp:96
MiscLib::rn_urand
size_t rn_urand(size_t m)
Definition: Random.h:29