ref: f7c895607e99fac2f72ae283a7f6e1e52c142a69
dir: /libsec/nfastrand.c/
#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) abort(); m = Maxrand - Maxrand % n; while((r = fastrand()) >= m) ; return r%n; }