Module Stdlib.Random
Contents
Instructions: Use this module in your project
In the IDE (CLion, Visual Studio Code, Xcode, etc.) you use for your DkSDK project:
Add the following to your project's
dependencies/CMakeLists.txt
:DkSDKProject_DeclareAvailable(ocaml CONSTRAINT "= 4.14.0" FINDLIBS str unix runtime_events threads dynlink) DkSDKProject_MakeAvailable(ocaml)
Add the
Findlib::ocaml
library to any desired targets insrc/*/CMakeLists.txt
:target_link_libraries(YourPackage_YourLibraryName # ... existing libraries, if any ... Findlib::ocaml)
Click your IDE's
Build
button
Not using DkSDK?
FIRST, do one or all of the following:
Run:
opam install ocaml.4.14.0
Edit your
dune-project
and add:(package (name YourExistingPackage) (depends ; ... existing dependenices ... (ocaml (>= 4.14.0))))
Then run:
dune build *.opam # if this fails, run: dune build
Edit your
<package>.opam
file and add:depends: [ # ... existing dependencies ... "ocaml" {>= "4.14.0"} ]
Then run:
opam install . --deps-only
FINALLY, add the library to any desired
(library)
and/or (executable)
targets in your **/dune
files:
(library
(name YourLibrary)
; ... existing library options ...
(libraries
; ... existing libraries ...
))
(executable
(name YourExecutable)
; ... existing executable options ...
(libraries
; ... existing libraries ...
))
Basic functions
val
init : ``int
->
unit
Initialize the generator, using the argument as a seed. The same seed will always yield the same sequence of numbers.
val
full_init : ``int array``
->
unit
Same as Random.init
but takes more data as seed.
val
self_init : ``unit
->
unit
Initialize the generator with a random seed chosen in a system-dependent
way. If /dev/urandom
is available on the host machine, it is used to
provide a highly random initial seed. Otherwise, a less random seed is
computed from system parameters (current time, process IDs).
val
bits : ``unit
->
int
Return 30 random bits in a nonnegative integer.
-
before 3.12.0
used a different algorithm (affects all the following functions)
val
int : ``int
->
int
Random.int bound
returns a random integer between 0 (inclusive) and
bound
(exclusive). bound
must be greater than 0 and less than
230.
val
full_int : ``int
->
int
Random.full_int bound
returns a random integer between 0 (inclusive)
and bound
(exclusive). bound
may be any positive integer.
If bound
is less than 230, Random.full_int bound
is equal
to Random.int
bound
. If bound
is greater than
230 (on 64-bit systems or non-standard environments, such as
JavaScript), Random.full_int
returns a value, where
Random.int
raises
Invalid_argument
.
- since 4.13.0
Random.int32 bound
returns a random integer between 0 (inclusive) and
bound
(exclusive). bound
must be greater than 0.
val
nativeint :
Nativeint.t
->
Nativeint.t
Random.nativeint bound
returns a random integer between 0 (inclusive)
and bound
(exclusive). bound
must be greater than 0.
Random.int64 bound
returns a random integer between 0 (inclusive) and
bound
(exclusive). bound
must be greater than 0.
val
float : ``float
->
float
Random.float bound
returns a random floating-point number between 0
and bound
(inclusive). If bound
is negative, the result is negative
or zero. If bound
is 0, the result is 0.
val
bool : ``unit
->
bool
Random.bool ()
returns true
or false
with probability 0.5 each.
val
bits32 : ``unit
->
Int32.t
Random.bits32 ()
returns 32 random bits as an integer between
Int32.min_int
and
Int32.max_int
.
- since 4.14.0
val
bits64 : ``unit
->
Int64.t
Random.bits64 ()
returns 64 random bits as an integer between
Int64.min_int
and
Int64.max_int
.
- since 4.14.0
val
nativebits : ``unit
->
Nativeint.t
Random.nativebits ()
returns 32 or 64 random bits (depending on the
bit width of the platform) as an integer between
Nativeint.min_int
and
Nativeint.max_int
.
- since 4.14.0
Advanced functions
The functions from module State
manipulate
the current state of the random generator explicitly. This allows using
one or several deterministic PRNGs, even in a multi-threaded program,
without interference from other parts of the program.
module
State
:
sig
...
end
val
get_state : ``unit
->
State.t
Return the current state of the generator used by the basic functions.
val
set_state :
State.t
->
unit
Set the state of the generator used by the basic functions.