Skip to main content

Functional interface to the NIST randomness tests

Project description


GitHub Workflow Status Read the Docs License PyPI Python Version

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])
(a) The nth partial sum = 2
(b) S_n/n               = 0.200000
p_value = 0.527089
>>> print(p_value)

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:

  • Andrew Rukhin
  • Juan Soto
  • James Nechvatal
  • Miles Smid
  • Elaine Barker
  • Stefan Leigh
  • Mark Levenson
  • Mark Vangel
  • David Banks,
  • Alan Heckert
  • James Dray
  • San Vo
  • Lawrence E Bassham III

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.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page