Random State Initialization
===========================
- Function: void gmp_randinit_default (gmp_randstate_t STATE)
Initialize STATE with a default algorithm. This will be a
compromise between speed and randomness, and is recommended for
applications with no special requirements.
- Function: void gmp_randinit_lc_2exp (gmp_randstate_t STATE, mpz_t A,
unsigned long C, unsigned long M2EXP)
Initialize STATE with a linear congruential algorithm X = (A*X +
C) mod 2^M2EXP.
The low bits of X in this algorithm are not very random. The least
significant bit will have a period no more than 2, and the second
bit no more than 4, etc. For this reason only the high half of
each X is actually used.
When a random number of more than M2EXP/2 bits is to be generated,
multiple iterations of the recurrence are used and the results
concatenated.
- Function: int gmp_randinit_lc_2exp_size (gmp_randstate_t STATE,
unsigned long SIZE)
Initialize STATE for a linear congruential algorithm as per
`gmp_randinit_lc_2exp'. A, C and M2EXP are selected from a table,
chosen so that SIZE bits (or more) of each X will be used, ie.
M2EXP >= SIZE/2.
If successful the return value is non-zero. If SIZE is bigger
than the table data provides then the return value is zero. The
maximum SIZE currently supported is 128.
- Function: void gmp_randinit (gmp_randstate_t STATE,
gmp_randalg_t ALG, ...)
*This function is obsolete.*
Initialize STATE with an algorithm selected by ALG. The only
choice is `GMP_RAND_ALG_LC', which is `gmp_randinit_lc_2exp_size'.
A third parameter of type `unsigned long' is required, this is the
SIZE for that function. `GMP_RAND_ALG_DEFAULT' or 0 are the same
as `GMP_RAND_ALG_LC'.
`gmp_randinit' sets bits in `gmp_errno' to indicate an error.
`GMP_ERROR_UNSUPPORTED_ARGUMENT' if ALG is unsupported, or
`GMP_ERROR_INVALID_ARGUMENT' if the SIZE parameter is too big.
- Function: void gmp_randclear (gmp_randstate_t STATE)
Free all memory occupied by STATE.