Stdlib.Random(3) OCaml library Stdlib.Random(3)

# [NAME](#NAME)

Stdlib.Random - no description

# [Module](#Module)

Module Stdlib.Random

# [Documentation](#Documentation)

Module **Random**  
: **(module Stdlib\_\_Random)**

## [Basic functions](#Basic_functions)

*val init* : **int -&gt; 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 -&gt; unit**

Same as **Random.init** but takes more data as seed.

*val self\_init* : **unit -&gt; 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 -&gt; int**

Return 30 random bits in a nonnegative integer.

**Before3.12.0** used a different algorithm (affects all the following functions)

*val int* : **int -&gt; 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 full\_int* : **int -&gt; int**

**Random.full\_int bound** returns a random integer between 0 (inclusive) and **bound** (exclusive). **bound** may be any positive integer.

If **bound** is less than 2^30, **Random.full\_int bound** is equal to **Random.int** **bound** . If **bound** is greater than 2^30 (on 64-bit systems or non-standard environments, such as JavaScript), **Random.full\_int** returns a value, where **Random.int** raises **Invalid\_argument** .

**Since** 4.13.0

*val int32* : **Int32.t -&gt; Int32.t**

**Random.int32 bound** returns a random integer between 0 (inclusive) and **bound** (exclusive). **bound** must be greater than 0.

*val nativeint* : **Nativeint.t -&gt; Nativeint.t**

**Random.nativeint bound** returns a random integer between 0 (inclusive) and **bound** (exclusive). **bound** must be greater than 0.

*val int64* : **Int64.t -&gt; Int64.t**

**Random.int64 bound** returns a random integer between 0 (inclusive) and **bound** (exclusive). **bound** must be greater than 0.

*val float* : **float -&gt; float**

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

*val bool* : **unit -&gt; bool**

**Random.bool ()** returns **true** or **false** with probability 0.5 each.

*val bits32* : **unit -&gt; Int32.t**

**Random.bits32 ()** returns 32 random bits as an integer between **Int32.min\_int** and **Int32.max\_int** .

**Since** 4.14.0

*val bits64* : **unit -&gt; Int64.t**

**Random.bits64 ()** returns 64 random bits as an integer between **Int64.min\_int** and **Int64.max\_int** .

**Since** 4.14.0

*val nativebits* : **unit -&gt; Nativeint.t**

**Random.nativebits ()** returns 32 or 64 random bits (depending on the bit width of the platform) as an integer between **Nativeint.min\_int** and **Nativeint.max\_int** .

**Since** 4.14.0

## [Advanced functions](#Advanced_functions)

The functions from module **Random.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.

*module State :* **sig end**

*val get\_state* : **unit -&gt; State.t**

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

*val set\_state* : **State.t -&gt; unit**

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

2026-10-27 OCamldoc

---

Document: Stdlib.Random(3o) from ocaml-4 4.14.4-r4 (Chainguard OS)
Source: https://github.com/ocaml/ocaml
