A total of sixteen statistical tests
were developed, implemented and evaluated. The following describes each
of the tests.
Frequency (Monobits) Test
Description: The focus of the test is the
proportion of zeroes and ones for the entire sequence. The purpose
of this test is to determine whether that number of ones and zeros in a
sequence are approximately the same as would be expected for a truly random
sequence. The test assesses the closeness of the fraction of ones
to ½, that is, the number of ones and zeroes in a sequence should
be about the same.
Test for Frequency within a Block
Description: The focus of the test is the
proportion of zeroes and ones within M-bit blocks. The purpose of this
test is to determine whether the frequency of ones is an M-bit block is
approximately M/2.
Runs Test
Description: The focus of this test is the
total number of zero and one runs in the entire sequence, where a run is
an uninterrupted sequence of identical bits. A run of length k means
that a run consists of exactly k identical bits and is bounded before and
after with a bit of the opposite value. The purpose of the runs test is
to determine whether the number of runs of ones and zeros of various lengths
is as expected for a random sequence. In particular, this test determines
whether the oscillation between such substrings is too fast or too slow.
Test for the Longest Run of Ones in
a Block
Description: The focus of the test is the
longest run of ones within M-bit blocks. The purpose of this test is to
determine whether the length of the longest run of ones within the tested
sequence is consistent with the length of the longest run of ones that
would be expected in a random sequence. Note that an irregularity in the
expected length of the longest run of ones implies that there is also an
irregularity in the expected length of the longest run of zeroes.
Long runs of zeroes were not evaluated separately due to a concern about
statistical independence among the tests.
Random Binary Matrix Rank Test
Description: The focus of the test is the
rank of disjoint sub-matrices of the entire sequence. The purpose
of this test is to check for linear dependence among fixed length substrings
of the original sequence.
Discrete Fourier Transform (Spectral)
Test
Description: The focus of this test is the
peak heights in the discrete Fast Fourier Transform. The purpose
of this test is to detect periodic features (i.e., repetitive patterns
that are near each other) in the tested sequence that would indicate a
deviation from the assumption of randomness.
Non-overlapping (Aperiodic) Template
Matching Test
Description: The focus of this test is the
number of occurrences of pre-defined target substrings. The
purpose of this test is to reject sequences that exhibit too many occurrences
of a given non-periodic (aperiodic) pattern. For this test and for the
Overlapping Template Matching test, an m-bit window is used to search for
a specific m-bit pattern. If the pattern is not found, the window slides
one bit position. For this test, when the pattern is found, the window
is reset to the bit after the found pattern, and the search resumes.
Overlapping (Periodic) Template Matching
Test
Description: The focus of this test is the
number of pre-defined target substrings. The purpose of this test
is to reject sequences that show deviations from the expected number of
runs of ones of a given length. Note that when there is a deviation from
the expected number of ones of a given length, there is also a deviation
in the runs of zeroes. Runs of zeroes were not evaluated separately due
to a concern about statistical independence among the tests. For
this test and for the Non-overlapping Template Matching test, an m-bit
window is used to search for a specific m-bit pattern. If the pattern is
not found, the window slides one bit position. For this test, when the
pattern is found, the window again slides one bit, and the search is resumed.
Maurer's Universal Statistical Test
Description: The focus of this test is the
number of bits between matching patterns. The purpose of the test
is to detect whether or not the sequence can be significantly compressed
without loss of information. An overly compressible sequence is considered
to be non-random.
Lempel-Ziv Complexity Test
Description: The focus of this test is the
number of cumulatively distinct patterns (words) in the sequence.
The purpose of the test is to determine how far the tested sequence can
be compressed. The sequence is considered to be non-random if it
can be significantly compressed. A random sequence will have a characteristic
number of distinct patterns.
Linear Complexity Test
Description: The focus of this test is the
length of a generating feedback register. The purpose of this test
is to determine whether or not the sequence is complex enough to be considered
random. Random sequences are characterized by a longer feedback register.
A short feedback register implies non-randomness.
Serial Test
Description: The focus of this test
is the frequency of each and every overlapping m-bit pattern across the
entire sequence. The purpose of this test is to determine whether
the number of occurrences of the 2m m-bit overlapping patterns is approximately
the same as would be expected for a random sequence. The pattern
can overlap.
Approximate Entropy Test
Description: The focus of this test is the
frequency of each and every overlapping m-bit pattern. The purpose
of the test is to compare the frequency of overlapping blocks of two consecutive/adjacent
lengths (m and m+1) against the expected result for a random sequence.
Cumulative Sum (Cusum) Test
Description: The focus of this test is the
maximal excursion (from zero) of the random walk defined by the cumulative
sum of adjusted (-1, +1) digits in the sequence. The purpose of the
test is to determine whether the cumulative sum of the partial sequences
occurring in the tested sequence is too large or too small relative to
the expected behavior of that cumulative sum for random sequences.
This cumulative sum may be considered as a random walk. For a random
sequence, the random walk should be near zero. For non-random sequences,
the excursions of this random walk away from zero will be too large.
Random Excursions Test
Description: The focus of this test is the
number of cycles having exactly K visits in a cumulative sum random walk.
The cumulative sum random walk is found if partial sums of the (0,1) sequence
are adjusted to (-1, +1). A random excursion of a random walk consists
of a sequence of n steps of unit length taken at random that begin at and
return to the origin. The purpose of this test is to determine if the number
of visits to a state within a random walk exceeds what one would expect
for a random sequence.
Random Excursions Variant Test
Description: The focus of this test is the
number of times that a particular state occurs in a cumulative sum random
walk. The purpose of this test is to detect deviations from the expected
number of occurrences of various states in the random walk.