Abyss

Abyss™ is the fastest 64-bit PRNG that passes all Dieharder tests.

Although GhostProxies makes hyper-efficient open-source PRNGs, the statistical stringence is a huge performance bottleneck in some speed-critical applications.

Abyss™ speeds up noise sampling procedures that were slowing down AI models, dataset augmentation, signal processing, simulations and video game engines.

Abyss™ uses the latest Dieharder 3.31.1 test suite as a minimum PRNG standard that trades off the highest level of statistical stringence for next-generation speed.

The following non-cryptographic PRNG library (with flexible output bit widths) can be implemented in compliance with a proprietary license.

Implementation

Abyss™ was implemented in C (requiring the stdint.h header to define a 64-bit, unsigned integral type for uint64_t).

Each Abyss™ variant has PulseField™ (for independent parallel sequences), a minimum period of at least 2⁶⁴ and reversibility.

Abyss™ is in development and coming soon.

Randomness

Each Abyss™ PRNG variant passes the latest Dieharder 3.31.1 tests with reproducible results (each state variable was seeded with 0).

In further detail, a PRNG that "passes Dieharder" passes at least 1 full set of the default dieharder -a -g 200 tests (with no FAILED results).

If statistical stringence is required, BlastCircuit™, RecoilFuse™ and FlurryGrid™ each have hyper-fast speed without compromising excellent statistical test results.

Speed

Each Abyss™ variant is the fastest 64-bit PRNG (compared to 64-bit PRNGs with the same output bit width) within the aforementioned randomness constraints.

Abyss™ speed claims are consistent across 64-bit architectures, compilers (GCC, CC and Clang), compiler settings and programming languages (excluding JavaScript).

Abyss™ disputes should log platform details and the fastest process execution speed (with gcc -O3) among several speed test repetitions.

The aforementioned speed test should generate (and hash) 1 billion pseudorandom integer generation results in a #pragma GCC unroll 0 loop.