Crates.io | randu |
lib.rs | randu |
version | 0.9.4 |
source | src |
created_at | 2024-08-03 07:02:44.086228 |
updated_at | 2024-08-10 12:29:19.831132 |
description | RANDU MCG65539 is IBM System/360 random number generator |
homepage | https://gitlab.com/hsn10/randu |
repository | https://gitlab.com/hsn10/randu.git |
max_upload_size | |
id | 1324154 |
size | 15,008 |
RANDU is Pseudorandom multiplicative congruential generator (MCG). This generator was first introduced in the early 1960s; its use soon became widespread during 1960's and 1970's. Its part of the IBM Scientific Subroutine Library for IBM System/360 computers.
RANDU uses MCG coeficients multiplier a = 65539 ( 2^16 + 3 ) and modulus m = 2^31 and constant c = 0. It can be implemented very quickly on 32-bit hardware in just 2 operations: wrapping multiplication by a and bit masking of result using AND 0x7fffffff.
Generated values are positive 31 bit integers. Generator period is 2^29. Lower bits have low randomness and should not be used separately. Problem with lower bits randomness and not achieving full period is common for all congruential generators with power of 2 modulus.
RANDU fails the spectral test for dimensions greater than 2. RANDU produces very strong banding when used in 3 dimensions. All points in 3d space fall in 15 two-dimensional planes. This effect can be used in GPU programming for visual effects and take advantage of compute simplicity.
https://en.wikipedia.org/wiki/RANDU
https://en.wikipedia.org/wiki/Linear_congruential_generator
2d | 3d | 4d | 5d | 6d | 7d | 8d |
---|---|---|---|---|---|---|
0.93 | 0.012 | 0.059 | 0.16 | 0.29 | 0.45 | 0.62 |
Values 0.75 and higher are commonly considered as passing of the spectral test. While this generator failing higher dimensions it is a very strong in generating 2d data.
This is free and unencumbered software released into the public domain.