2.5. Random generator library
The RANDOM module implements pseudo-random number generation using a linear
congruential generator with vectorized state (int4). It provides integer,
float, and vector random values, as well as geometric sampling (unit vectors,
points in spheres and disks).
All functions and symbols are in “random” module, use require to get access to it.
require daslib/random
Example:
require daslib/random
[export]
def main() {
var seed = random_seed(12345)
print("int: {random_int(seed)}\n")
print("float: {random_float(seed)}\n")
print("float: {random_float(seed)}\n")
}
// output:
// int: 7584
// float: 0.5848567
// float: 0.78722495
2.5.1. Constants
- random::LCG_RAND_MAX = 32767
maximum possible output of random number generator
- random::LCG_RAND_MAX_BIG = 1073741823
maximum possible output of random_big_int
2.5.2. Seed and basic generators
- random::random_big_int(seed: int4&) : auto()
random integer 0..32768*32768-1 (LCG_RAND_MAX_BIG)
- Arguments
seed : int4&
- random::random_float(seed: int4&) : auto()
random float 0..1
- Arguments
seed : int4&
- random::random_float4(seed: int4&) : auto()
random float4, each component is 0..1
- Arguments
seed : int4&
- random::random_int(seed: int4&) : auto()
random integer 0..32767 (LCG_RAND_MAX)
- Arguments
seed : int4&
- random::random_int4(seed: int4&) : auto()
random int4, each component is 0..32767 (LCG_RAND_MAX)
- Arguments
seed : int4&
- random::random_seed(seed: int) : auto()
constructs seed vector out of single integer seed
- Arguments
seed : int
- random::random_seed2D(seed: int4&; co: int2; cf: int = 0) : auto()
constructs seed vector out of 2d screen coordinates and frame counter cf
- Arguments
seed : int4&
co : int2
cf : int
- random::random_uint(seed: int4&) : auto()
random unsigned integer using 3-component LCG, covering full uint range
- Arguments
seed : int4&
2.5.3. Random iterators
- random::each_random_uint(rnd_seed: int = 13) : iterator<uint>()
infinite generator of random uints initialized with rnd_seed
- Arguments
rnd_seed : int
2.5.4. Specific distributions
- random::random_in_unit_disk(seed: int4&) : auto()
Returns a random float3 point uniformly distributed inside the unit disk (length <= 1, z=0).
- Arguments
seed : int4&
- random::random_in_unit_sphere(seed: int4&) : auto()
Returns a random float3 point uniformly distributed inside the unit sphere (length <= 1).
- Arguments
seed : int4&
- random::random_unit_vector(seed: int4&) : auto()
random float3 unit vector (length=1.)
- Arguments
seed : int4&