a
This commit is contained in:
23
libsec/nfastrand.c
Normal file
23
libsec/nfastrand.c
Normal file
@ -0,0 +1,23 @@
|
||||
#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;
|
||||
}
|
Reference in New Issue
Block a user