.B
ulong ntruerand(ulong val)
.sp
-.B #include <mp.h>
-.br
.B #include <libsec.h>
.PP
.B
returns a uniform pseudo-random
number
.IR x ,
-.RI 0≤ x <2\u\s715\s10\d.
+.if t 0≤ \fIx\fR <2\u\s715\s10\d.
+.if n 0≤ x <2^15.
.PP
.I Lrand
returns a uniform
.B long
.IR x ,
-.RI 0≤ x <2\u\s731\s10\d.
+.if t 0≤ \fIx\fR <2\u\s731\s10\d.
+.if n 0≤ x <2^31.
.PP
.I Frand
returns a uniform
.I Truerand
returns a random unsigned long read from
.BR /dev/random .
-Due to the nature of
-.BR /dev/random ,
-truerand can only return a few hundred bits a
-second.
.PP
.I Ntruerand
returns a uniform random integer
.IR x ,
-.RI 0≤ x < val ≤ 2\u\s732\s10\d-1.
+.if t 0≤ \fIx\fR < \fIval\fR ≤ 2\u\s732\s10\d-1.
+.if n 0≤ x < val ≤ 2^32-1.
.PP
.I 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
-.BR /dev/random .
+fills a buffer with bytes from the cryptographic pseudo-random
+number generator. The generator is automatically seeded by
+.IR truerand .
.PP
.I Prng
uses the native
to return a uniform
.B "unsigned long
.IR x ,
-.RI 0≤ x < 2\u\s732\s10\d-1.
+.if t 0≤ \fIx\fR <2\u\s732\s10\d-1.
+.if n 0≤ x <2^32-1.
.PP
.I Nfastrand
uses
to return a uniform
.B "unsigned long
.IR x ,
-.RI 0≤ x < val ≤ 2\u\s732\s10\d-1.
+.if t 0≤ \fIx\fR < \fIval\fR ≤ 2\u\s732\s10\d-1.
+.if n 0≤ x < val ≤ 2^32-1.
.SH SOURCE
.B /sys/src/libc/port/*rand.c
.br