#squares #rand #square #no-alloc #squares-rng

no-std squares-rnd

Simple and fast counter based non-crypto random generator

4 stable releases

3.1.0 Oct 12, 2023
3.0.0 May 23, 2022
2.0.0 Dec 12, 2020
1.0.0 Nov 3, 2020

#1283 in Algorithms


Used in lolid

BSL-1.0 license

9KB
129 lines

squares-rnd

Rust Crates.io Documentation

Simple and fast counter based non-crypto random generator.

The algorithm is based on Middle Square Weyl Sequence RNG. See paper for details.

NOTE: Not cryptographically secure.

There are several note-worthy properties to the algorithm:

  • State is represented by counter, which is incremented to produce new value, hence making it easy to predict how state would change.
  • The code is short and simple, only taking minimum amount of operations to produce uniform output.
  • key must have close to equal number of zeroes and ones for optimal output. This crate provides single key for use, to have more download key file gist

No runtime deps