|
|
1.1 root 1: .TH RAND 3
2: .CT 2 math
3: .SH NAME
4: rand, lrand, frand, nrand, srand \(mi random number generator
5: .SH SYNOPSIS
6: .nf
7: .B int rand()
8: .PP
9: .B long lrand()
10: .PP
11: .B double frand()
12: .PP
13: .B int nrand(val)
14: .B int val;
15: .PP
16: .B srand(seed)
17: .B int seed;
18: .fi
19: .SH DESCRIPTION
20: .I Rand
21: uses a linear feedback
22: random number generator
23: to return uniform pseudo-random
24: numbers
25: .I x,
26: .if t .RI 0\(<= x <2\u\s715\s10\d,
27: .if n 0<=x<2^15,
28: with period about
29: .if t 2\u\s732\s0\d.
30: .if n 2^32.
31: .PP
32: .I Lrand
33: returns a uniform long
34: .I x,
35: .if t .RI 0\(<= x <2\u\s731\s10\d,
36: .if n 0<=x<2^31,
37: with period about
38: .if t 2\u\s748\s0\d.
39: .if n 2^48.
40: .PP
41: .I Frand
42: returns a uniform double
43: .I x,
44: .if t .RI 0.0\(<= x <1.0,
45: .if n 0.0<=x<1.0,
46: always a multiple of
47: .if t 2\u\s7\-31\s0\d.
48: .if n 2^-31.
49: .PP
50: .I Nrand
51: returns a uniform integer
52: .I x,
53: .if t .RI 0\(<= x < val.
54: .if n 0<=x<val.
55: .PP
56: The generators are initialized by calling
57: .I srand
58: with whatever you like as argument.
59: To get a different starting value each time,
60: .IP
61: .L
62: srand((int)time((long *)0));
63: .LP
64: will work as long as it is not called more often
65: than once per second.
66: .SH BUGS
67: .I Rand
68: and
69: .I lrand
70: are quite machine-dependent.
71: Although
72: .I frand
73: and
74: .I nrand
75: are more portable, they appear in few versions of Unix.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.