Base.RandomSourcePseudo-random number generation.
This is a wrapper of the standard library's Random library, though it does not share state with that library.
Note that all of these "basic" functions mutate a global random state.
Initialize the generator, using the argument as a seed. The same seed will always yield the same sequence of numbers.
Same as Random.init but takes more data as seed.
Initialize the generator with a more-or-less random seed chosen in a system-dependent way. By default, self_init is disallowed in inline tests, as it's often used for no good reason and it just creates nondeterministic failures for everyone. Passing ~allow_in_tests:true removes this restriction in case you legitimately want nondeterministic values, like in Filename.temp_dir.
Return 30 random bits in a nonnegative integer.
Random.bits64 () returns 64 random bits as an integer between Int64.min_int and Int64.max_int.
Random.int bound returns a random integer between 0 (inclusive) and bound (exclusive). bound must be greater than 0.
Random.int32 bound returns a random integer between 0 (inclusive) and bound (exclusive). bound must be greater than 0.
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.
Random.float bound returns a random floating-point number between 0 (inclusive) and bound (exclusive). If bound is negative, the result is negative or zero. If bound is 0, the result is 0.
Produces a random value between the given inclusive bounds. Raises if bounds are given in decreasing order.
Produces a value between the given bounds (inclusive and exclusive, respectively). Raises if bounds are given in decreasing order.
Random.bool () returns true or false with probability 0.5 each.
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.