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。
bound
<= 0 或 bound
>= 230,則會引發 Invalid_argument
。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
。
bound
<= 0,則會引發 Invalid_argument
。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
大小的系統上會產生相同的輸出。
min > max
,則會引發 Invalid_argument
。val int32 : Int32.t -> Int32.t
Random.int32 bound
返回一個介於 0(包含)和 bound
(不包含)之間的隨機整數。bound
必須大於 0。
bound
<= 0,則會引發 Invalid_argument
。val int32_in_range : min:int32 -> max:int32 -> int32
Random.int32_in_range ~min ~max
返回一個介於 min
(包含)和 max
(包含)之間的隨機整數。 min
和 max
都可以是負數; min
必須小於或等於 max
。
min > max
,則會引發 Invalid_argument
。val nativeint : Nativeint.t -> Nativeint.t
Random.nativeint bound
返回一個介於 0(包含)和 bound
(不包含)之間的隨機整數。bound
必須大於 0。
bound
<= 0,則會引發 Invalid_argument
。val nativeint_in_range : min:nativeint -> max:nativeint -> nativeint
Random.nativeint_in_range ~min ~max
返回一個介於 min
(包含)和 max
(包含)之間的隨機整數。 min
和 max
都可以是負數; min
必須小於或等於 max
。
min > max
,則會引發 Invalid_argument
。val int64 : Int64.t -> Int64.t
Random.int64 bound
返回一個介於 0(包含)和 bound
(不包含)之間的隨機整數。bound
必須大於 0。
bound
<= 0,則會引發 Invalid_argument
。val int64_in_range : min:int64 -> max:int64 -> int64
Random.int64_in_range ~min ~max
返回一個介於 min
(包含)和 max
(包含)之間的隨機整數。 min
和 max
都可以是負數; min
必須小於或等於 max
。
min > max
,則會引發 Invalid_argument
。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
。