Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
samples / Zaochniki / МоделированиеСистем.doc
Скачиваний:
27
Добавлен:
25.03.2015
Размер:
247.3 Кб
Скачать

Эмпирические тесты

Рассмотрим специализированные тесты, которые могут быть использованы исключительно для проверки качества датчиков базовых случайных чисел. Каждый тест применяется к последовательности случайных чисел <U>=u0, u1, u2, ..., которые должны быть равномерно распределены между нулем и единицей. Некоторые тесты предназначены для проверки целочисленных последовательностей, т.е. проверке будет подвергаться вспомогательная последовательность <Y>=<y0, y1, y2, ...>, где yi{0; 1; … , d-1}, т.е. которая определяется следующим образом: yn=int(d*un). (9)

Проверка серий. Проверяется равномерность и независимость пар следующих друг за другом случайных чисел. Для этого подсчитывается сколько раз встречается каждая пара (y2j, y2j+1) при 0j<n. Затем применяется критерий 2 с числом категорий k=d2 и равными вероятностями 1/d2 во всех категориях.

Проверка интервалов. В этом тесте проверяется длина интервалов между появлением значений ui, принадлежащих некоторому заданному отрезку. Если  и  – два действительных числа, причем 0<<1, то подсчитываются длины последовательностей uj, uj+1, ..., uj+r, в которых только uj+r лежит между  и . Такая последовательность из r+1 чисел определяет интервал длины r.

Проверка комбинаций. В тесте рассматриваются n групп из k следующих друг за другом целых чисел (yki, yki+1, ..., yki+k-1), где 0i<n. Подсчитывается число групп, в которых имеется r разных чисел. Затем с помощью критерия 2 проверяется соответствуют ли частоты комбинаций вероятностям.

Проверка полного набора. Используется последовательность y0, y1, ... и определяются длина сегментов yj+1, yj+2, ..., yj+r, необходимых для того, чтобы собрать полный набор целых чисел от 0 до d–1.

Проверка перестановок. Разделим исходную последовательность на n групп по t элементов в каждой: (ujt, ujt+1, ..., ujt+t-1), 0j<n. В каждой группе возможно всего t! вариантов относительного расположения чисел. Подсчитывается, сколько раз встречается каждое конкретное относительное расположение, после чего применяется критерий 2 с k=t! категорий и вероятностями 1/t!.

При реализации этого теста удобно воспользоваться следующим алгоритмом анализа перестановок.

Любому набору несовпадающих элементов (u1, ..., ut) ставиться в соответствие целочисленная функция f(u1, ..., ut), такая, что 0f(u1, ..., ut)<t! и f(u1, ..., ut)=f(v1, ..., vt) в том и только в том случае, когда элементы в (u1, ..., ut) и (v1, ..., vt) расположены в одинаковом порядке. В алгоритме используется вспомогательный вектор (C1, ..., Ct).

  1. Присвоить r=t.

  2. Пусть us=max(u1, ..., ut). Тогда Cr=s-1.

  3. Взаимозаменить Xr и Xs.

  4. r=r-1

  5. Если r>0, то вернуться на шаг 2.

  6. f=Ct+tCt-1+t(t-1)Ct-2+t(t-1)*...*3C2=(...(C23+C3)4+...+Ct-1)t+Ct

C1 нигде не используется, так как из шага 2 следует, что C1 всегда рано 0, причем f(u1, ..., un)=0, если u2<u3<...<un<u1, и f(u1, ..., un)=t-1, если u1<u2<...<un.

Проверка на монотонность. Этот тест выявляет длины возрастающих подпоследовательностей чисел в исходной последовательности. Для корректного применения критерия 2 требуется выбрасывать элемент, непосредственно следующий за отрезком монотонности, то есть в случае uj>uj+1 очередной отрезок начинается с uj+2.

Наибольшее из t. Пусть vj =max(utj, ujt+1, ..., ujt+t-1) при 0j<n. Применяется КС-критерий к последовательности v0, v1, ..., vn-1, принимая в качестве теоретической функции распределения F(x)=xt, 0x<1.

Последовательная корреляция. Вычислим статистику:

. (13)

Это коэффициент последовательной корреляции, который служит мерой зависимости uj+1 от uj. Желательно, чтобы C было близко к 0, но не равно ему, так как U0U1 и U1U2 не являются независимыми. Хорошим следует считать значение C, которое находится в 95% всех случаев в пределах между n-2n и n+2n, где , , n>2. (14)

Соседние файлы в папке Zaochniki