logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Random - Pseudo-random number generators (PRNG).

Documentation

       Module Random
        : sigend

       Pseudo-random number generators (PRNG).

       With  multiple domains, each domain has its own generator that evolves independently of the generators of
       other domains.  When a domain is created, its generator is initialized by  splitting  the  state  of  the
       generator associated with the parent domain.

       In  contrast,  all threads within a domain share the same domain-local generator.  Independent generators
       can be created with the Random.split function and used with the functions from the Random.State module.

       Before5.0 Random value generation used a different algorithm.  This affects all  the  functions  in  this
       module which return random values.

   Basicfunctionsvalinit : int->unit

       Initialize the domain-local generator, using the argument as a seed.  The same seed will always yield the
       same sequence of numbers.

       valfull_init : intarray->unit

       Same as Random.init but takes more data as seed.

       valself_init : unit->unit

       Initialize  the  domain-local  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, domain-local
       state).

       valbits : unit->int

       Return 30 random bits in a nonnegative integer.

       valint : int->intRandom.intbound  returns  a  random integer between 0 (inclusive) and bound (exclusive).  bound must be
       greater than 0 and less than 2^30.

       RaisesInvalid_argument if bound <= 0 or bound >= 2^30.

       valfull_int : int->intRandom.full_intbound returns a random integer between 0 (inclusive) and bound (exclusive).  bound may be
       any positive integer.

       If bound is less than 2^31, then Random.full_intbound  yields  identical  output  across  systems  with
       varying int sizes.

       If bound is less than 2^30, then Random.full_intbound is equal to Random.intbound .

       If  bound  is  at  least  2^30 (on 64-bit systems, or non-standard environments such as JavaScript), then
       Random.full_int returns a value whereas Random.int raises Invalid_argument .

       Since 4.13

       RaisesInvalid_argument if bound <= 0.

       valint_in_range : min:int->max:int->intRandom.int_in_range~min~max returns a random integer between min (inclusive) and max (inclusive).  Both
       min and max are allowed to be negative; min must be less than or equal to max .

       If both bounds fit in 32-bit signed integers (that is, if -2^31 <= min and max < 2^31), then int_in_range
       yields identical output across systems with varying int sizes.

       Since 5.2

       RaisesInvalid_argument if min>max .

       valint32 : Int32.t->Int32.tRandom.int32bound returns a random integer between 0 (inclusive) and bound (exclusive).  bound  must  be
       greater than 0.

       RaisesInvalid_argument if bound <= 0.

       valint32_in_range : min:int32->max:int32->int32Random.int32_in_range~min~max  returns  a random integer between min (inclusive) and max (inclusive).
       Both min and max are allowed to be negative; min must be less than or equal to max .

       Since 5.2

       RaisesInvalid_argument if min>max .

       valnativeint : Nativeint.t->Nativeint.tRandom.nativeintbound returns a random integer between 0 (inclusive) and bound (exclusive).  bound  must
       be greater than 0.

       RaisesInvalid_argument if bound <= 0.

       valnativeint_in_range : min:nativeint->max:nativeint->nativeintRandom.nativeint_in_range~min~max returns a random integer between min (inclusive) and max (inclusive).
       Both min and max are allowed to be negative; min must be less than or equal to max .

       Since 5.2

       RaisesInvalid_argument if min>max .

       valint64 : Int64.t->Int64.tRandom.int64bound  returns a random integer between 0 (inclusive) and bound (exclusive).  bound must be
       greater than 0.

       RaisesInvalid_argument if bound <= 0.

       valint64_in_range : min:int64->max:int64->int64Random.int64_in_range~min~max returns a random integer between min  (inclusive)  and  max  (inclusive).
       Both min and max are allowed to be negative; min must be less than or equal to max .

       Since 5.2

       RaisesInvalid_argument if min>max .

       valfloat : float->floatRandom.floatbound  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.

       valbool : unit->boolRandom.bool() returns true or false with probability 0.5 each.

       valbits32 : unit->Int32.tRandom.bits32() returns 32 random bits as an integer between Int32.min_int and Int32.max_int .

       Since 4.14

       valbits64 : unit->Int64.tRandom.bits64() returns 64 random bits as an integer between Int64.min_int and Int64.max_int .

       Since 4.14

       valnativebits : unit->Nativeint.tRandom.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

   Advancedfunctions
       The  functions  from module Random.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.

       moduleState:sigendvalget_state : unit->State.tget_state() returns a fresh copy of the current state of the domain-local generator (which is used by the
       basic functions).

       valset_state : State.t->unitset_states  updates  the  current  state  of  the  domain-local  generator  (which is used by the basic
       functions) by copying the state s into it.

       valsplit : unit->State.t

       Draw a fresh PRNG state from the current  state  of  the  domain-local  generator  used  by  the  default
       functions.  (The state of the domain-local generator is modified.)  See Random.State.split .

       Since 5.0

OCamldoc                                           2025-06-12                                         Random(3o)

Module

       Module   Random

Name

       Random - Pseudo-random number generators (PRNG).

See Also