模組 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