Тесты diehard
— это набор
статистических тестов
для измерения качества набора
случайных чисел
. Они были разработаны
в течение нескольких лет и впервые опубликованы на
CD-ROM
, посвящённом случайным числам. Вместе они рассматриваются как один из наиболее строгих существующих наборов тестов (отсюда и название —
англ.
«die-hard»
в качестве прилагательного означает приблизительно «трудноубиваемый» и обычно переводится на русский фразеологизмом «крепкий орешек»).
Описание тестов
Дни рождения
(Birthday Spacings) — выбираются случайные точки на большом интервале. Расстояния между точками должны быть асимптотически
распределены по Пуассону
. Название этот тест получил на основе
парадокса дней рождения
.
Пересекающиеся перестановки
(Overlapping Permutations) — анализируются последовательности пяти последовательных случайных чисел. 120 возможных перестановок должны получаться со статистически эквивалентной вероятностью.
Ранги матриц
(Ranks of matrices) — выбираются некоторое количество бит из некоторого количества случайных чисел для формирования матрицы над {0,1}, затем определяется
ранг матрицы
. Считаются ранги.
Обезьяньи тесты
(Monkey Tests) — последовательности некоторого количества бит интерпретируются как слова. Считаются пересекающиеся слова в потоке. Количество «слов», которые не появляются, должны удовлетворять известному распределению. Название этот тест получил на основе
теоремы о бесконечном количестве обезьян
.
Подсчёт единичек
(Count the 1’s) — считаются единичные биты в каждом из последующих или выбранных байт. Эти счётчики преобразуется в «буквы», и считаются случаи пятибуквенных «слов».
Тест на парковку
(Parking Lot Test) — единичные окружности случайно размещаются в квадрате 100×100. Если окружность пересекает уже существующую, попытаться ещё. После 12 000
попыток
, количество успешно «припаркованных» окружностей должно быть
нормально распределено
.
Тест на минимальное расстояние
(Minimum Distance Test) — 8000 точек случайно размещаются в квадрате
10 000
×
10 000
, затем находится минимальное расстояние между любыми парами. Квадрат этого расстояния должен быть экспоненциально распределён с некоторой медианой.
Тест случайных сфер
(Random Spheres Test) — случайно выбираются 4000 точек в кубе с ребром 1000. В каждой точке помещается сфера, чей радиус является минимальным расстоянием до другой точки. Минимальный объём сферы должен быть экспоненциально распределён с некоторой медианой.
Тест сжатия
(The Squeeze Test) — 2
31
умножается на случайные вещественные числа в диапазоне [0,1) до тех пор, пока не получится 1. Повторяется 100 000 раз. Количество вещественных чисел необходимых для достижения 1 должно быть распределено определённым образом.
Тест пересекающихся сумм
(Overlapping Sums Test) — генерируется длинная последовательность вещественных чисел из интервала [0,1). В ней суммируются каждые 100 последовательных чисел. Суммы должны быть нормально распределены с характерными средним и дисперсией.
Тест последовательностей
(Runs Test) — генерируется длинная последовательность на [0,1). Подсчитываются восходящие и нисходящие последовательности. Числа должны удовлетворять некоторому распределению.
Тест игры в кости
(The Craps Test) — играется 200 000 игр в
кости
, подсчитываются победы и количество бросков в каждой игре. Каждое число должно удовлетворять некоторому распределению.
Ссылки
— свободная реализация статистических тестов (включая diehard и
тесты NIST
) на
языке Си
.