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¶
- LCG_RAND_MAX = 32767¶
maximum possible output of random number generator
- LCG_RAND_MAX_BIG = 1073741823¶
maximum possible output of random_big_int
2.5.2. Seed and basic generators¶
- random_big_int(seed: int4&): auto¶
random integer 0..32768*32768-1 (LCG_RAND_MAX_BIG)
- Arguments:
seed : int4&
- random_float(seed: int4&): auto¶
random float 0..1
- Arguments:
seed : int4&
- random_float4(seed: int4&): auto¶
random float4, each component is 0..1
- Arguments:
seed : int4&
- random_int(seed: int4&): auto¶
random integer 0..32767 (LCG_RAND_MAX)
- Arguments:
seed : int4&
- random_int4(seed: int4&): auto¶
random int4, each component is 0..32767 (LCG_RAND_MAX)
- Arguments:
seed : int4&
- random_seed(seed: int): auto¶
constructs seed vector out of single integer seed
- Arguments:
seed : int
- 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_uint(seed: int4&): auto¶
random unsigned integer using 3-component LCG, covering full uint range
- Arguments:
seed : int4&
2.5.3. Random iterators¶
- 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_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_in_unit_sphere(seed: int4&): auto¶
Returns a random float3 point uniformly distributed inside the unit sphere (length <= 1).
- Arguments:
seed : int4&
- random_unit_vector(seed: int4&): auto¶
random float3 unit vector (length=1.)
- Arguments:
seed : int4&