#include <u.h> | |
#include <libc.h> | |
#include <libsec.h> | |
#define Maxrand ((1UL<<31)-1) | |
ulong | |
nfastrand(ulong n) | |
{ | |
ulong m, r; | |
/* | |
* set m to the maximum multiple of n <= 2^31-1 | |
* so we want a random number < m. | |
*/ | |
if(n > Maxrand) | |
sysfatal("nfastrand: n too large"); | |
m = Maxrand - Maxrand % n; | |
while((r = fastrand()) >= m) | |
; | |
return r%n; | |
} |