`type t = Stdlib.Random.State.t`

The type of PRNG states.

`val make : int array -> t`

Create a new state and initialize it with the given seed.

`val make_self_init : unit -> t`

Create a new state and initialize it with a system-dependent low-entropy seed.

`val copy : t -> t`

Return a copy of the given state.

`val bits : t -> int`
`val int : t -> int -> int`
`val full_int : t -> int -> int`
`val int_in_range : t -> min:int -> max:int -> int`
`val int32 : t -> Stdlib.Int32.t -> Stdlib.Int32.t`
`val int32_in_range : t -> min:int32 -> max:int32 -> int32`
`val nativeint : t -> Stdlib.Nativeint.t -> Stdlib.Nativeint.t`
`val nativeint_in_range : t -> min:nativeint -> max:nativeint -> nativeint`
`val int64 : t -> Stdlib.Int64.t -> Stdlib.Int64.t`
`val int64_in_range : t -> min:int64 -> max:int64 -> int64`
`val float : t -> float -> float`
`val bool : t -> bool`
`val char : t -> char`
`val enum_bits : t -> unit -> int BatEnum.t`
`val enum_int : t -> int -> int BatEnum.t`
`val enum_bool : t -> unit -> bool BatEnum.t`
`val enum_float : t -> float -> float BatEnum.t`
`val enum_int32 : t -> Stdlib.Int32.t -> Stdlib.Int32.t BatEnum.t`
`val enum_int64 : t -> Stdlib.Int64.t -> Stdlib.Int64.t BatEnum.t`
`val enum_nativeint : t -> Stdlib.Nativeint.t -> Stdlib.Nativeint.t BatEnum.t`
`val enum_char : t -> unit -> char BatEnum.t`

These functions are the same as the basic functions, except that they use (and update) the given PRNG state instead of the default one.

`val bits32 : t -> Stdlib.Int32.t`
`val bits64 : t -> Stdlib.Int64.t`
`val nativebits : t -> Stdlib.Nativeint.t`
`val split : t -> t`

Draw a fresh PRNG state from the given PRNG state. (The given PRNG state is modified.) The new PRNG is statistically independent from the given PRNG. Data can be drawn from both PRNGs, in any order, without risk of correlation. Both PRNGs can be split later, arbitrarily many times.

- since 3.6.0 and OCaml 5.0.0

`val to_binary_string : t -> string`
`val of_binary_string : string -> t`