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
14namespace 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
#define MiscLib_RN_BUFSIZE
Definition Random.h:10
#define MiscLib_RN_RAND_MOD
Definition Random.h:11
size_t rn_urand(size_t m)
Definition Random.h:29
size_t rn_point
Definition Random.cpp:24
size_t rn_buf[]
Definition Random.cpp:23
size_t rn_refresh(void)
Definition Random.cpp:96
size_t rn_rand()
Definition Random.h:22
float rn_frand()
Definition Random.h:35
void rn_setseed(size_t)
Definition Random.cpp:27