8 void fast_srandom(unsigned long seed
);
9 unsigned long fast_getseed(void);
11 /* Note that only 16bit numbers can be returned. */
12 uint16_t fast_random(unsigned int max
);
13 /* Use this one if you want larger numbers. */
14 static uint32_t fast_irandom(unsigned int max
);
16 /* Get random number in [0..1] range. */
20 static inline uint32_t
21 fast_irandom(unsigned int max
)
24 return fast_random(max
);
25 int himax
= (max
- 1) / 65536;
26 uint16_t hi
= fast_random(himax
+ 1);
27 return ((uint32_t)hi
<< 16) | fast_random(hi
< himax
? 65536 : max
% 65536);