Up
# module Core_random

: sig
###### Basic functions

###### Advanced functions

Pseudo-random number generators (PRNG).

Note that all of these "basic" functions mutate a global random state.

#

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 self_init : unit -> unit

Initialize the generator with a more-or-less random seed chosen in a system-dependent way.

#

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 float : float -> float

`Random.float bound`

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

(exclusive). If `bound`

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

is 0, the result is 0.

#

val bool : unit -> bool

`Random.bool ()`

returns `true`

or `false`

with probability 0.5 each.

#

module State : sig

The functions from module `State`

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

#

type t

#

val make_self_init : unit -> t

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

end

#

val get_state : unit -> [

| `Consider_using_Random_State_default

]
OCaml's `Random.get_state`

makes a copy of the default state, which is almost
certainly not what you want. `State.default`

, which is the actual default state, is
probably what you want.

end