randu 0.9.3

RANDU MCG65539 is IBM System/360 random number generator
Documentation
# RANDU


[![Crates.io License](https://img.shields.io/crates/l/randu)](https://unlicense.org)
[![Crates.io Version](https://img.shields.io/crates/v/randu.svg)](https://crates.io/crates/randu)
[![Crates.io MSRV](https://img.shields.io/crates/msrv/randu?logo=rust&label=MSRV&labelColor=orange)](https://blog.rust-lang.org/2021/10/21/Rust-1.56.0.html)
[![Safe Rust](https://img.shields.io/badge/Rust-safe-brightgreen.svg)](https://www.rust-lang.org/policies/safety.html)
[![dependency status](https://deps.rs/repo/gitlab/hsn10/randu/status.svg)](https://deps.rs/repo/gitlab/hsn10/randu)
[![Documentation](https://docs.rs/randu/badge.svg)](https://docs.rs/randu)
[![Downloads](https://img.shields.io/crates/d/randu)](https://crates.io/crates/randu/versions)
[![](https://tokei.rs/b1/gitlab/hsn10/randu?category=code)](https://github.com/XAMPPRocky/tokei)

RANDU is Pseudorandom multiplicative
[congruential generator](https://en.wikipedia.org/wiki/Linear_congruential_generator)
(MCG) used during 1960's and 1970's in
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. 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 non negative 31 bit integers. Generator period is 2^29. Lower bits have low randomness
and should not be used separately. Problem with lower bits randomness 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](https://www.juliabloggers.com/dissecting-randu/)
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.

### References


https://en.wikipedia.org/wiki/RANDU

https://oeis.org/A096555

https://en.wikipedia.org/wiki/Linear_congruential_generator

## License


This is free and unencumbered software released into the public domain.

This code can be used under terms of [CC0](https://creativecommons.org/publicdomain/zero/1.0/) or
the [Unlicense](https://unlicense.org).

![Unlicense logo](https://unlicense.org/pd-icon.png)