zrand.3 - libzahl - big integer library | |
git clone git://git.suckless.org/libzahl | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
zrand.3 (2219B) | |
--- | |
1 .TH ZRAND 3 libzahl | |
2 .SH NAME | |
3 zrand - Generate random a number | |
4 .SH SYNOPSIS | |
5 .nf | |
6 #include <zahl.h> | |
7 | |
8 void zrand(z_t \fIr\fP, enum zranddev \fIdev\fP, enum zranddist \fIdist\… | |
9 .fi | |
10 .SH DESCRIPTION | |
11 .B zrand | |
12 generates a random number and stores it in | |
13 .IR r . | |
14 .P | |
15 .I dev | |
16 selects the device | |
17 .B zrand | |
18 uses to generate random bits. | |
19 This value may be either of: | |
20 .TP | |
21 .B DEFAULT_RANDOM | |
22 This is a version-dependent alias for the | |
23 default random number generator. That is, | |
24 using this option will cause | |
25 .B zrand | |
26 to select the default random number generator. | |
27 Which random number generator is actually | |
28 selected may change between versions of | |
29 .B zrand. | |
30 | |
31 The selection will be a balance between randomness | |
32 and performance. | |
33 .TP | |
34 .B FASTEST_RANDOM | |
35 This is a version-dependent alias for the | |
36 fastest random number generator. That is, | |
37 using this option will cause | |
38 .B zrand | |
39 to select the fastest random number generator. | |
40 Which random number generator is actually | |
41 selected may change between versions of | |
42 .B zrand. | |
43 .TP | |
44 .B FAST_RANDOM | |
45 The fast, non-blocking random number generator. | |
46 This is /dev/urandom on Linux. | |
47 .TP | |
48 .B SECURE_RANDOM | |
49 The secure, blocking random number generator. | |
50 This is /dev/random on Linux. | |
51 .P | |
52 .I dist | |
53 selects the probably distribution of the | |
54 output | |
55 .IR r : | |
56 .TP | |
57 .B QUASIUNIFORM | |
58 Use the method of generation that is often | |
59 recommended for generating uniformally random | |
60 integers. This method has unnecessary | |
61 computational overhead and is not properly | |
62 uniform, but is is guaranteed to run in | |
63 constant time assuming the underlying device | |
64 for random bit generation does. | |
65 | |
66 The generated number if be in the inclusive | |
67 range [0, | |
68 .IR max ]. | |
69 .TP | |
70 .B UNIFORM | |
71 Generate a integer in the range [0, | |
72 .IR max ] | |
73 uniformally random. | |
74 .TP | |
75 .B MODUNIFORM | |
76 Slightly faster alternative to | |
77 .BR UNIFORM . | |
78 | |
79 It is not truly uniform. It is biased | |
80 to the lower numbers, but the probably | |
81 if any number is either | |
82 .I p | |
83 or | |
84 .I 2p | |
85 for some parameter-dependent number | |
86 .IR p . | |
87 | |
88 It uses the naïve approach of generating | |
89 a random number and modulation with the maximum | |
90 number. However, this implementation this | |
91 modulation by subtracting with the maximum number | |
92 if the generated number is greater. | |
93 .P | |
94 It is safe to call | |
95 .B zrand | |
96 with non-unique parameters. |