Stdlib.Random.3o - Man Page

no description

Module

Module   Stdlib.Random

Documentation

Module Random
: (module Stdlib__Random)

Basic functions

val init : int -> unit

Initialize the domain-local 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 domain-local generator with a random seed chosen in a system-dependent way​.  If a cryptographically secure pseudorandom number generator 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, domain-local state)​.

val bits : unit -> int

Return 30 random bits in a nonnegative integer​.

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

Raises Invalid_argument if bound <= 0 or bound >= 2^30​.

val full_int : int -> 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^31, then Random​.full_int bound yields identical output across systems with varying int sizes​.

If bound is less than 2^30, then Random​.full_int bound is equal to Random​.int bound ​.

If bound is at least 2^30 (on 64-bit systems, or non-standard environments such as JavaScript), then Random​.full_int returns a value whereas Random​.int raises Invalid_argument ​.

Since 4.13

Raises Invalid_argument if bound <= 0​.

val int_in_range : min:int -> max:int -> int

Random​.int_in_range ~min ~max returns a random integer between min (inclusive) and max (inclusive)​. Both min and max are allowed to be negative; min must be less than or equal to max ​.

If both bounds fit in 32-bit signed integers (that is, if -2^31 <= min and max < 2^31), then int_in_range yields identical output across systems with varying int sizes​.

Since 5.2

Raises Invalid_argument if min > max ​.

val int32 : Int32.t -> Int32.t

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

Raises Invalid_argument if bound <= 0​.

val int32_in_range : min:int32 -> max:int32 -> int32

Random​.int32_in_range ~min ~max returns a random integer between min (inclusive) and max (inclusive)​. Both min and max are allowed to be negative; min must be less than or equal to max ​.

Since 5.2

Raises Invalid_argument if min > max ​.

val nativeint : Nativeint.t -> Nativeint.t

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

Raises Invalid_argument if bound <= 0​.

val nativeint_in_range : min:nativeint -> max:nativeint -> nativeint

Random​.nativeint_in_range ~min ~max returns a random integer between min (inclusive) and max (inclusive)​. Both min and max are allowed to be negative; min must be less than or equal to max ​.

Since 5.2

Raises Invalid_argument if min > max ​.

val int64 : Int64.t -> Int64.t

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

Raises Invalid_argument if bound <= 0​.

val int64_in_range : min:int64 -> max:int64 -> int64

Random​.int64_in_range ~min ~max returns a random integer between min (inclusive) and max (inclusive)​. Both min and max are allowed to be negative; min must be less than or equal to max ​.

Since 5.2

Raises Invalid_argument if min > max ​.

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

Random​.bool () returns true or false with probability 0​.5 each​.

val bits32 : unit -> Int32.t

Random​.bits32 () returns 32 random bits as an integer between Int32​.min_int and Int32​.max_int ​.

Since 4.14

val bits64 : unit -> Int64.t

Random​.bits64 () returns 64 random bits as an integer between Int64​.min_int and Int64​.max_int ​.

Since 4.14

val nativebits : unit -> 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

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 -> State.t

get_state() returns a fresh copy of the current state of the domain-local generator (which is used by the basic functions)​.

The current state is unchanged, which means that random numbers generated from multiple calls to get_state () will be identical​.

See Random​.State​.make_self_init and Random​.split instead to obtain a fresh state that is not shared​.

val set_state : State.t -> unit

set_state s updates the current state of the domain-local generator (which is used by the basic functions) by copying the state s into it​.

val split : unit -> State.t

Draw a fresh PRNG state from the current state of the domain-local generator used by the default functions​. (The state of the domain-local generator is modified​.) See Random​.State​.split ​.

Since 5.0

Info

2026-09-15 OCamldoc OCaml library