Skip to main content

Functional interface to the NIST randomness tests

Project description

sts-pylib

GitHub Workflow Status Read the Docs License PyPI Python Version

A functional Python interface to the NIST Statistical Test Suite.

Quickstart

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.

Contributors

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

sts_pylib-0.0.5-cp38-cp38-manylinux2010_x86_64.whl (104.1 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ x86-64

sts_pylib-0.0.5-cp37-cp37m-manylinux2010_x86_64.whl (103.6 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.12+ x86-64

sts_pylib-0.0.5-cp36-cp36m-manylinux2010_x86_64.whl (103.7 kB view details)

Uploaded CPython 3.6m manylinux: glibc 2.12+ x86-64

File details

Details for the file sts_pylib-0.0.5-cp38-cp38-manylinux2010_x86_64.whl.

File metadata

  • Download URL: sts_pylib-0.0.5-cp38-cp38-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 104.1 kB
  • Tags: CPython 3.8, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.50.0 CPython/3.8.5

File hashes

Hashes for sts_pylib-0.0.5-cp38-cp38-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 051567675741d98cc1e3b8f6e78cb7d5716211544e8194f5b0f1d0592d5f0a1d
MD5 9c63bd44d1a2f37c2b70e90a12824dfc
BLAKE2b-256 dea396c038c80f910075fa1317989f9afd2af04c0f6c2af0e27e9a13d2428b2e

See more details on using hashes here.

File details

Details for the file sts_pylib-0.0.5-cp37-cp37m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: sts_pylib-0.0.5-cp37-cp37m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 103.6 kB
  • Tags: CPython 3.7m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.50.0 CPython/3.8.5

File hashes

Hashes for sts_pylib-0.0.5-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 fd20f222988a3c28e398ae5c274725936dfb1f8128ff36f666758ce80b92fca0
MD5 4d83014c70e8e1cf1028358c20190d9c
BLAKE2b-256 fd757ed166f3f8041391ce7efeb8e0015229e64f8a8cc7775f45cca9da0f973b

See more details on using hashes here.

File details

Details for the file sts_pylib-0.0.5-cp36-cp36m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: sts_pylib-0.0.5-cp36-cp36m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 103.7 kB
  • Tags: CPython 3.6m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.50.0 CPython/3.8.5

File hashes

Hashes for sts_pylib-0.0.5-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 0694c29f5158fc12472b841775b678891943d7d2201a024612d02e8854d01a05
MD5 40a7c377a618ebdfdf5904d9b297dcfa
BLAKE2b-256 11804d6bdb8f1bf8d62c247bcc07a1d425cef09087f6dea4b30244e329e38b24

See more details on using hashes here.

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