The Full 19-Test Audit Suite

Every test we run, what it catches, and why it matters. The open-source Community Edition has 8 tests. Our full audits run all 15 NIST SP 800-22 tests plus 4 additional statistical tests — 19 core tests per game, plus game-specific validation.

19
Core Statistical Tests
3
Test Categories
100k+
Outcomes per Game
0.01
Significance Level (α)

Section A: NIST SP 800-22 Core Open Source

The foundation. Eight tests from the NIST standard for testing random number generators. These are included in our open-source tool — anyone can run them.

1. Chi-Square Goodness of Fit

#01
100-bin distribution test

Tests if outcomes are uniformly distributed across 100 equal bins. The most fundamental fairness check — are all values equally likely?

Detects: Biased outcome distributions, skewed ranges, missing values

2. Kolmogorov-Smirnov

#02
Continuous distribution test (Stephens correction)

Measures the maximum distance between the observed and theoretical uniform distribution. More sensitive than Chi-Square for continuous data.

Detects: Any deviation from uniform distribution, subtle skew

3. Monobit / Frequency Test

#03
NIST SP 800-22 Section 2.1

Converts outcomes to bits and checks the proportion of 0s vs 1s. The simplest NIST test — are there roughly equal numbers of each?

Detects: Overall bias toward high or low outcomes

4. Runs Test

#04
NIST SP 800-22 Section 2.3

Counts uninterrupted sequences of identical bits. Too many or too few runs indicates non-randomness.

Detects: Repeating patterns (0-0-0-0-1-1-1-1), predictable sequences

5. Block Frequency

#05
NIST SP 800-22 Section 2.2

Checks frequency balance within 128-bit blocks. Catches local bias that global tests miss.

Detects: Local bias — sequences that are fair overall but unfair in sections

6. Cumulative Sums

#06
NIST SP 800-22 Section 2.13

Tracks the running sum of +1/-1 converted bits. The maximum excursion should stay within expected bounds.

Detects: Drift — outcomes trending in one direction over time

7. Serial Correlation

#07
Lag-1 autocorrelation coefficient

Measures whether consecutive outcomes are correlated. In random data, knowing outcome N should tell you nothing about outcome N+1.

Detects: Sequential dependence, predictable next values

8. Runs Up/Down

#08
Wald-Wolfowitz trend test

Counts monotonic runs (increasing or decreasing sequences). The number and length of trends should match random expectations.

Detects: Trending sequences, gradual manipulation

Section B: NIST SP 800-22 Extended Full Audit

Eleven additional NIST tests that complete the full SP 800-22 battery. These require more computational power and catch subtle non-randomness that the core tests miss.

9. Approximate Entropy

#09
NIST SP 800-22 Section 2.12

Measures the frequency of overlapping m-bit patterns. True random data has maximum entropy — all patterns equally likely. Low entropy means outcomes are predictable.

Detects: Subtle pattern repetition invisible to frequency tests

10. Linear Complexity

#10
NIST SP 800-22 Section 2.10 — Berlekamp-Massey

Determines the shortest linear feedback shift register (LFSR) that could generate the sequence. Random data requires maximum-length LFSRs.

Detects: LFSR-based RNGs, linearly predictable sequences

11. Maurer's Universal

#11
NIST SP 800-22 Section 2.9

Measures compressibility. If the sequence can be significantly compressed, it's not random. This test catches any deviation that increases predictability.

Detects: Any structural regularity, compressible patterns

12. Non-overlapping Template

#12
NIST SP 800-22 Section 2.7

Searches for specific bit patterns and counts occurrences. Random data should contain each pattern with expected frequency — no more, no less.

Detects: Pattern manipulation, outcome steering

13. Overlapping Template

#13
NIST SP 800-22 Section 2.8

Like non-overlapping but counts overlapping occurrences of templates. More sensitive to certain types of pattern injection.

Detects: Overlapping pattern anomalies, template frequency bias

14. Longest Run of Ones

#14
NIST SP 800-22 Section 2.4

Examines the longest run of consecutive 1s in each block. Too-long or too-short runs indicate the RNG is not producing genuinely random output.

Detects: Abnormal run lengths, constrained randomness

15. Binary Matrix Rank

#15
NIST SP 800-22 Section 2.5

Divides bits into 32x32 matrices and checks their rank distribution. Random matrices have a very specific rank distribution — deviations indicate structure.

Detects: Linear dependence between bits, structured non-randomness

16. Spectral / DFT

#16
NIST SP 800-22 Section 2.6

Applies Discrete Fourier Transform and checks peak heights. Random data has 95% of spectral peaks below threshold. Periodic manipulation creates visible spikes.

Detects: Periodic patterns, cyclic manipulation, frequency-domain anomalies

17. Serial Test

#17
NIST SP 800-22 Section 2.11

Tests the frequency of all overlapping m-bit patterns. Extends the Monobit and Block Frequency concepts to check pair and triplet uniformity across the full bitstream.

Detects: Uneven bit pair/triplet distributions, pattern bias

18. Random Excursions

#18
NIST SP 800-22 Section 2.14

Converts the bitstream to a random walk and analyzes cycle structure. Counts visits to states -4 through +4 within each cycle. Non-random walks produce abnormal visit frequencies.

Detects: Abnormal cycle patterns, biased random walk behavior

19. Random Excursions Variant

#19
NIST SP 800-22 Section 2.15

Counts total visits to each state in the random walk (states -9 through +9). More sensitive than Random Excursions for detecting deviations from expected visit frequencies.

Detects: State visit imbalance, cumulative drift anomalies

Section C: Game-Specific Validation Full Audit

Tests designed for specific casino game mechanics. These validate that the transformation from raw RNG output to game result produces the expected distribution. 1–2 tests run per game type, depending on the game being audited.

Crash: 1.00x Instant Rate

G1
Binomial proportion z-test

Verifies the rate of instant-bust rounds (1.00x multiplier) matches the expected house edge. For Stake/Bustabit: ~4.0% (1/33 + rounding). For Roobet: ~5.95% (1/20 + rounding). Deviations indicate manipulated house edge.

Detects: Inflated house edge, manipulated bust frequency

Dice: Uniform Distribution

G2
Chi-Square (100-bin)

Tests that dice outcomes across 0–100 are uniformly distributed. Each value should appear with equal probability — any deviation means the dice are loaded.

Detects: Biased dice outcomes, non-uniform value distribution

Coin Flip: 50/50 Fairness

G3
Binomial proportion z-test

Verifies that coin flips produce a true 50/50 split between heads and tails within expected statistical variance.

Detects: Biased coin, asymmetric outcome probability

Roulette: Slot Distribution

G4
Chi-Square (37 slots)

Tests that all 37 roulette slots (0–36) receive roughly equal hits. Catches both uniform bias and targeted slot manipulation.

Detects: Slot bias, hot/cold number manipulation

Open Source vs. Full Audit

Community Edition (Free)

  • 4 NIST SP 800-22 tests
  • 4 additional statistical tests
  • Single seed pair analysis
  • CLI output + basic pass/fail
  • Enough to verify our published results
Get on GitLab →

Full Audit (19+ Tests)

  • Everything in Community Edition, plus:
  • Complete NIST SP 800-22 (all 15 tests)
  • Game-specific validation per game type
  • Professional HTML scorecard
  • SHA-256 dataset checksums
  • Deep Audit available: PractRand + TestU01
View Published Audits →

All tests use significance level α = 0.01 (99% confidence).
A casino passes if ≥75% of tests pass per NIST recommendation.

Read Full Methodology