Pseudo-random number generators (PRNG).

Initialize the generator, using the argument as a seed.
The same seed will always yield the same sequence of numbers.

Same as

`Random.init`

but takes more data as seed.
Initialize the generator with a random seed chosen
in a system-dependent way. If

`/dev/urandom`

is available on
the host machine, it is used to provide a highly random initial
seed. Otherwise, a less random seed is computed from system
parameters (current time, process IDs).
Return 30 random bits in a nonnegative integer.

**Before 3.12.0 ** used a different algorithm (affects all the following
functions)

`Random.int bound`

returns a random integer between 0 (inclusive)
and `bound`

(exclusive). `bound`

must be greater than 0 and less
than 2`Random.int32 bound`

returns a random integer between 0 (inclusive)
and `bound`

(exclusive). `bound`

must be greater than 0.`Random.nativeint bound`

returns a random integer between 0 (inclusive)
and `bound`

(exclusive). `bound`

must be greater than 0.`Random.int64 bound`

returns a random integer between 0 (inclusive)
and `bound`

(exclusive). `bound`

must be greater than 0.`Random.float bound`

returns a random floating-point number
between 0 and `bound`

(inclusive). If `bound`

is
negative, the result is negative or zero. If `bound`

is 0,
the result is 0.`Random.bool ()`

returns `true`

or `false`

with probability 0.5 each.The functions from module

`State`

manipulate the current state
of the random generator explicitly.
This allows using one or several deterministic PRNGs,
even in a multi-threaded program, without interference from
other parts of the program.
Return the current state of the generator used by the basic functions.

Set the state of the generator used by the basic functions.