algorithms chaczenie diehard encryption entropy interesting marsaglia matematikk math mathematics maths programming random randomness randomnumbers rng statistical_testing statistics test testing

# Diehard tests

### From Wikipedia, the free encyclopedia

The **diehard tests** are a battery of statistical tests for measuring the quality of a set of random numbers. They were developed by George Marsaglia over several years and first published in 1995 on a CD-ROM of random numbers.

The tests are:

**Birthday spacings**: Choose random points on a large interval. The spacings between the points should be asymptotically Poisson distributed. The name is based on the birthday paradox.

**Overlapping permutations**: Analyze sequences of five consecutive random numbers. The 120 possible orderings should occur with statistically equal probability.

**Ranks of matrices**: Select some number of bits from some number of random numbers to form a matrix over {0,1}, then determine the rank of the matrix. Count the ranks.

**Monkey tests**: Treat sequences of some number of bits as "words". Count the overlapping words in a stream. The number of "words" that don't appear should follow a known distribution. The name is based on the infinite monkey theorem.

**Count the 1s**: Count the 1 bits in each of either successive or chosen bytes. Convert the counts to "letters", and count the occurrences of five-letter "words".

**Parking lot test**: Randomly place unit circles in a 100 x 100 square. If the circle overlaps an existing one, try again. After 12,000 tries, the number of successfully "parked" circles should follow a certain normal distribution.

**Minimum distance test**: Randomly place 8,000 points in a 10,000 x 10,000 square, then find the minimum distance between the pairs. The square of this distance should be exponentially distributed with a certain mean.

**Random spheres test**: Randomly choose 4,000 points in a cube of edge 1,000. Center a sphere on each point, whose radius is the minimum distance to another point. The smallest sphere's volume should be exponentially distributed with a certain mean.

**The squeeze test**: Multiply 2^{31}by random floats on [0,1) until you reach 1. Repeat this 100,000 times. The number of floats needed to reach 1 should follow a certain distribution.

**Overlapping sums test**: Generate a long sequence of random floats on [0,1). Add sequences of 100 consecutive floats. The sums should be normally distributed with characteristic mean and sigma.

**Runs test**: Generate a long sequence of random floats on [0,1). Count ascending and descending runs. The counts should follow a certain distribution.

**The craps test**: Play 200,000 games of craps, counting the wins and the number of throws per game. Each count should follow a certain distribution.