ref: 072c45d4633d5f03e3b79f9c60c3655a6d4a1149
dir: /sys/src/ape/lib/v/nrand.c/
#include <stdlib.h>
#define MASK 0x7FFFFFFFL
#define FRACT (1.0 / (MASK + 1.0))
extern long lrand(void);
double
frand(void)
{
return lrand() * FRACT;
}
nrand(int n)
{
long slop, v;
slop = MASK % n;
do
v = lrand();
while(v <= slop);
return v % n;
}