# Module `Stdlib.Random`

## Basic functions

`val init : int -> unit`

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

`val full_init : int array -> unit`

Same as

`Random.init`

but takes more data as seed.

`val self_init : unit -> unit`

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).

`val bits : unit -> int`

Return 30 random bits in a nonnegative integer.

- before 3.12.0
used a different algorithm (affects all the following functions)

`val int : int -> int`

`Random.int bound`

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

(exclusive).`bound`

must be greater than 0 and less than 2^{30}.

`val int32 : Stdlib.Int32.t -> Stdlib.Int32.t`

`Random.int32 bound`

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

(exclusive).`bound`

must be greater than 0.

`val nativeint : Stdlib.Nativeint.t -> Stdlib.Nativeint.t`

`Random.nativeint bound`

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

(exclusive).`bound`

must be greater than 0.

`val int64 : Stdlib.Int64.t -> Stdlib.Int64.t`

`Random.int64 bound`

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

(exclusive).`bound`

must be greater than 0.

## Advanced functions

`module State : sig ... end`

`val get_state : unit -> State.t`

Return the current state of the generator used by the basic functions.

`val set_state : State.t -> unit`

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