zrand.3 - libzahl - big integer library
 (HTM) git clone git://git.suckless.org/libzahl
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) 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\fP, z_t \fImax\fP);
            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.