85 seed = (1812433253UL * (
seed ^ (
seed >> 30)) + pos + 1) & 0xffffffffUL;
93#define MATRIX_A 0x9908b0dfUL
94#define UPPER_MASK 0x80000000UL
95#define LOWER_MASK 0x7fffffffUL
106 for (i = 0; i <
N -
M; i++) {
110 for (; i <
N - 1; i++) {
119 y = state->
key[state->
pos++];
123 y ^= (y << 7) & 0x9d2c5680UL;
124 y ^= (y << 15) & 0xefc60000UL;
132#if ULONG_MAX <= 0xffffffffUL
142 unsigned long mask = max, value;
153#if ULONG_MAX > 0xffffffffUL
158#if ULONG_MAX > 0xffffffffUL
159 if (max <= 0xffffffffUL) {
160 while ((value = (
rk_random(state) & mask)) > max);
163 while ((value = (
rk_ulong(state) & mask)) > max);
166 while ((value = (
rk_ulong(state) & mask)) > max);
unsigned long rk_interval(unsigned long max, rk_state *state)
static unsigned long rk_ulong(rk_state *state)
returns a random unsigned long between 0 and ULONG_MAX inclusive
void rk_seed(unsigned long seed, rk_state *state)
unsigned long rk_random(rk_state *state)
unsigned long key[RK_STATE_LEN]