9srv Manual Collection/plan9/rand(2) | 9srv Manual Collection/plan9/rand(2) |
---|
int rand(void)
long lrand(void)
double frand(void)
int nrand(int val)
long lnrand(long val)
void srand(long seed)
ulong truerand(void)
ulong ntruerand(ulong val)
#include <mp.h>
#include <libsec.h>
void genrandom(uchar *buf, int nbytes)
void prng(uchar *buf, int nbytes)
ulong fastrand(void)
ulong nfastrand(ulong val)
Lrand
returns a uniform
long
x,
0≤x<2usize=7>31size=1>0d.
Frand
returns a uniform
double
x,
0.0≤x<1.0,
This function calls
lrand
twice to generate a number with as many as 62 significant bits of mantissa.
Nrand
returns a uniform integer
x,
0≤x<val.
Lnrand
is the same, but returns a
long.
The algorithm is additive feedback with:
giving a period of
The generators are initialized by calling
srand
with whatever you like as argument.
To get a different starting value each time,
will work as long as it is not called more often
than once per second.
Calling
will initialize the generators to their
starting state.
Truerand
returns a random unsigned long read from
/dev/random.
Due to the nature of
/dev/random,
truerand can only return a few hundred bits a
second.
Ntruerand
returns a uniform random integer
x,
0≤x<val≤2usize=7>32size=1>0d-1.
Genrandom
fills a buffer with bytes from the X9.17 pseudo-random
number generator. The X9.17 generator is seeded by 24
truly random bytes read from
/dev/random.
Prng
uses the native
rand(2)
pseudo-random number generator to fill the buffer. Used with
srand,
this function can produce a reproducible stream of pseudo random
numbers useful in testing.
Both
genrandom
and
prng
may be passed to
mprand
(see
mp(2)).
Fastrand
uses
genrandom
to return a uniform
unsigned long
x,
0≤x<2usize=7>32size=1>0d-1.
Nfastrand
uses
genrandom
to return a uniform
unsigned long
x,
0≤x<val≤2usize=7>32size=1>0d-1.
/sys/src/libc/9sys/truerand.c
/sys/src/libsec/port/genrandom.c
/sys/src/libsec/port/prng.c
/sys/src/libsec/port/*fastrand.c
9srv Manual Collection/plan9/rand(2) | Rev: Wed Mar 25 17:02:31 GMT 2009 |