Python interface to the NIST statistical tests for randomness
A functional Python interface to the NIST Statistical Test Suite.
You can install sts-pylib
via pip
:
$ pip install sts-pylib
This will install a package sts
into your system,
which contains NIST’s statistical tests for randomness.
A complete reference is available in the docs.
>>> import sts
>>> p_value = sts.frequency([1, 0, 1, 1, 0, 1, 0, 1, 0, 1])
FREQUENCY TEST
---------------------------------------------
COMPUTATIONAL INFORMATION:
(a) The nth partial sum = 2
(b) S_n/n = 0.200000
---------------------------------------------
p_value = 0.527089
>>> print(p_value)
0.5270892568655381
Note that all the tests take the input sequence epsilon
(a sample of RNG output)
as an array of 0
and 1
integers.
A more thorough demonstration of sts-pylib
is available on
Kaggle.
The original sts C program,
alongside its corresponding SP800-22 paper,
were authored by the following at NIST:
Additional work to improve Windows compatibility was done by
Paweł Krawczyk (@kravietz),
with a bug fix by @ZZMarquis.
I (@Honno) am responsible for
converting sts into a functional interface,
and providing a Python wrapper on-top of it.
You can check out my own randomness testing suite coinflip,
where I am creating a robust and user-friendly
version of NIST’s sts in Python.