module Random:sig
..end
伪随机数生成器 (PRNG)。
使用多个域,每个域都有自己的生成器,该生成器独立于其他域的生成器发展。创建域时,其生成器通过拆分与父域关联的生成器的状态来初始化。
相反,一个域内的所有线程共享同一个域本地生成器。可以使用 Random.split
函数创建独立的生成器,并与 Random.State
模块中的函数一起使用。
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。
Invalid_argument
如果 bound
<= 0 或 bound
>= 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
。
Invalid_argument
如果 bound
<= 0。val int_in_range : min:int -> max:int -> int
Random.int_in_range ~min ~max
返回介于 min
(含)和 max
(含)之间的随机整数。min
和 max
都允许为负数;min
必须小于或等于 max
。
如果两个边界都适合 32 位有符号整数(即,如果 -231 <= min
和 max
< 231),则 int_in_range
在具有不同 int
大小的系统上产生相同的输出。
Invalid_argument
如果 min > max
。val int32 : Int32.t -> Int32.t
Random.int32 bound
返回介于 0(含)和 bound
(不含)之间的随机整数。bound
必须大于 0。
Invalid_argument
如果 bound
<= 0。val int32_in_range : min:int32 -> max:int32 -> int32
Random.int32_in_range ~min ~max
返回介于 min
(含)和 max
(含)之间的随机整数。min
和 max
都允许为负数;min
必须小于或等于 max
。
Invalid_argument
如果 min > max
。val nativeint : Nativeint.t -> Nativeint.t
Random.nativeint bound
返回介于 0(含)和 bound
(不含)之间的随机整数。bound
必须大于 0。
Invalid_argument
如果 bound
<= 0。val nativeint_in_range : min:nativeint -> max:nativeint -> nativeint
Random.nativeint_in_range ~min ~max
返回介于 min
(含)和 max
(含)之间的随机整数。min
和 max
都允许为负数;min
必须小于或等于 max
。
Invalid_argument
如果 min > max
。val int64 : Int64.t -> Int64.t
Random.int64 bound
返回介于 0(含)和 bound
(不含)之间的随机整数。bound
必须大于 0。
Invalid_argument
如果 bound
<= 0。val int64_in_range : min:int64 -> max:int64 -> int64
Random.int64_in_range ~min ~max
返回介于 min
(含)和 max
(含)之间的随机整数。min
和 max
都允许为负数;min
必须小于或等于 max
。
Invalid_argument
如果 min > max
。val float : float -> float
Random.float bound
返回介于 0 和 bound
(含)之间的随机浮点数。如果 bound
为负数,则结果为负数或零。如果 bound
为 0,则结果为 0。
val bool : unit -> bool
Random.bool ()
返回 true
或 false
,概率各为 0.5。
val bits32 : unit -> Int32.t
Random.bits32 ()
返回 32 个随机位,作为一个介于 Int32.min_int
和 Int32.max_int
之间的整数。
val bits64 : unit -> Int64.t
Random.bits64 ()
返回 64 个随机位,作为一个介于 Int64.min_int
和 Int64.max_int
之间的整数。
val nativebits : unit -> Nativeint.t
Random.nativebits ()
返回 32 或 64 个随机位(取决于平台的位宽),作为一个介于 Nativeint.min_int
和 Nativeint.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
。