Модуль Random
module Random: sig .. end
Генераторы псевдослучайных чисел (ПСПЧ).
С множеством доменов, каждый домен имеет свой собственный генератор, который эволюционирует независимо от генераторов других доменов. При создании домена его генератор инициализируется путем разделения состояния генератора, связанного с родительским доменом.
В отличие от этого, все потоки внутри домена используют один и тот же локальный генератор домена. Независимые генераторы могут быть созданы с помощью функции Random.split и использоваться с функциями из модуля Random.State.
- До версии 5.0 Генерация случайных значений использовала другой алгоритм. Это влияет на все функции в этом модуле, которые возвращают случайные значения.
Основные функции
val init : int -> unit
Инициализирует локальный генератор домена, используя аргумент в качестве начального значения. Одно и то же начальное значение всегда будет давать ту же последовательность чисел.
val full_init : int array -> unit
Аналогично Random.init, но принимает больше данных в качестве начального значения.
val self_init : unit -> unit
Инициализирует локальный генератор домена случайным начальным значением, выбранным зависимым от системы способом. Если /dev/urandom доступен на хост-машине, он используется для предоставления высокослучайного начального значения. В противном случае, менее случайное начальное значение вычисляется из параметров системы (текущее время, идентификаторы процессов, локальное состояние домена).
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.
- С 4.13
-
Возбуждает
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.
- С 5.2
-
Возбуждает
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.
- С 5.2
-
Возбуждает
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.
- Since 5.2
-
Raises
Invalid_argumentеслиmin > max.
val int64 : Int64.t -> Int64.t
Random.int64 bound возвращает случайное целое число между 0 (включительно) и bound (исключительно). bound должно быть больше 0.
-
Raises
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.
- Since 5.2
-
Raises
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.
- Since 4.14
val bits64 : unit -> Int64.t
Random.bits64 () возвращает 64 случайных бита в виде целого числа между Int64.min_int и Int64.max_int.
- Since 4.14
val nativebits : unit -> Nativeint.t
Random.nativebits () возвращает 32 или 64 случайных бита (в зависимости от разрядности платформы) как целое число между Nativeint.min_int и Nativeint.max_int.
- Since 4.14
Дополнительные функции
Функции из модуля Random.State явно манипулируют текущим состоянием генератора случайных чисел. Это позволяет использовать один или несколько детерминированных генераторов псевдослучайных чисел, даже в многопоточной программе, без вмешательства других частей программы.
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
Создать новый состояние ПСПЧ из текущего состояния локального генератора области, используемого функциями по умолчанию. (Состояние локального генератора области изменяется). См. Random.State.split.
- Since 5.0
© 1995-2024 INRIA.
https://ocaml.org/manual/5.2/api/Random.html