模块 Stdlib.Random

module Random: Random

基本函数

val init : int -> unit

使用参数作为种子初始化域本地生成器。相同的种子始终会产生相同的数字序列。

val full_init : int array -> unit

Random.init 相同,但使用更多数据作为种子。

val self_init : unit -> unit

使用系统相关的方式选择随机种子来初始化域本地生成器。如果主机上可用 /dev/urandom,则它用于提供高度随机的初始种子。否则,将从系统参数(当前时间、进程 ID、域本地状态)计算出随机性较低的种子。

val bits : unit -> int

返回一个非负整数中的 30 个随机位。

val int : int -> int

Random.int bound 返回介于 0(含)和 bound(不含)之间的随机整数。 bound 必须大于 0 且小于 230

val full_int : int -> int

Random.full_int bound 返回介于 0(含)和 bound(不含)之间的随机整数。 bound 可以是任何正整数。

如果 bound 小于 231,则 Random.full_int bound 在具有不同 int 大小的系统中产生相同的输出。

如果 bound 小于 230,则 Random.full_int bound 等于 Random.int bound

如果 bound 至少为 230(在 64 位系统或 JavaScript 等非标准环境中),则 Random.full_int 返回一个值,而 Random.int 则引发 Invalid_argument.

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

Random.int_in_range ~min ~max 返回介于 min(含)和 max(含)之间的随机整数。 minmax 都可以为负数;min 必须小于或等于 max

如果两个边界都适合 32 位有符号整数(即,如果 -231 <= minmax < 231),则 int_in_range 在具有不同 int 大小的系统中产生相同的输出。

val int32 : Int32.t -> Int32.t

Random.int32 bound 返回介于 0(含)和 bound(不含)之间的随机整数。 bound 必须大于 0。

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

Random.int32_in_range ~min ~max 返回介于 min(含)和 max(含)之间的随机整数。 minmax 都可以为负数;min 必须小于或等于 max

val nativeint : Nativeint.t -> Nativeint.t

Random.nativeint bound 返回介于 0(含)和 bound(不含)之间的随机整数。 bound 必须大于 0。

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

Random.nativeint_in_range ~min ~max 返回介于 min(含)和 max(含)之间的随机整数。 minmax 都可以为负数;min 必须小于或等于 max

val int64 : Int64.t -> Int64.t

Random.int64 bound 返回介于 0(含)和 bound(不含)之间的随机整数。 bound 必须大于 0。

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

Random.int64_in_range ~min ~max 返回介于 min(含)和 max(含)之间的随机整数。 minmax 都可以为负数;min 必须小于或等于 max

val float : float -> float

Random.float bound 返回介于 0 和 bound(含)之间的随机浮点数。如果 bound 为负数,则结果为负数或零。如果 bound 为 0,则结果为 0。

val bool : unit -> bool

Random.bool () 返回 truefalse,概率分别为 0.5。

val bits32 : unit -> Int32.t

Random.bits32 () 返回 32 个随机位,表示为介于 Int32.min_intInt32.max_int 之间的整数。

val bits64 : unit -> Int64.t

Random.bits64 () 返回 64 个随机位,表示为介于 Int64.min_intInt64.max_int 之间的整数。

val nativebits : unit -> Nativeint.t

Random.nativebits () 返回 32 或 64 个随机位(取决于平台的位宽),表示为介于 Nativeint.min_intNativeint.max_int 之间的整数。

高级函数

来自模块 Random.State 的函数显式地操作随机生成器的当前状态。这允许在多线程程序中使用一个或多个确定性 PRNG,而不会受到程序其他部分的干扰。

module State: sig .. end
val get_state : unit -> State.t

get_state() 返回域本地生成器(由基本函数使用)的当前状态的全新副本。

val set_state : State.t -> unit

set_state s 通过将状态 s 复制到其中来更新域本地生成器(由基本函数使用)的当前状态。

val split : unit -> State.t

从由默认函数使用的域本地生成器的当前状态中提取一个全新的 PRNG 状态。(域本地生成器的状态将被修改。)参见 Random.State.split