Проверочные тесты

Программная реализация датчика псевдослучайных, квазиравномерно распределенных чисел может быть получена любым программистом на основе разработанного им алгоритма с применением либо аналитических методов, либо методов перемешивания. Качество датчика необходимо проверить. Осуществляются проверки путем применения проверочных тестов. Рассмотрим проверочные тесты.

Тест частот. Отрезок [0,1] разбивается на m (обычно 10-20) равных интервалов, как это показано на рис. 4.6.

Рис. 4.6

 

Датчик псевдослучайных, квазиравномерно распределенных чисел генерирует N величин, каждая из которых принадлежит одному из m отрезков.

В результате проведения N испытаний будут получены эмпирические частоты ni, представляющие собой число попаданий чисел датчика в интервал i, i=. Деление частот ni на число опытов N даст эмпирические частоты.

Если рассматривать теоретическое равномерное распределение случайной величины на отрезке [0,1], то теоретические вероятности попадания в каждый из m отрезков одинаковы и равны значению 1/m.

Для проверки согласия датчика псевдослучайных, квазиравномерно распределенных чисел и теоретического равномерного распределения полученные эмпирические частости ni/N,(i=), сравнивают с теоретическими вероятностями 1/m. Согласие проверяется по критерию c2, т.к. случайная величина

(4.7)

подчиняется распределению c2с (m-1) степенями свободы, где N - объем выборки (число опытов).

На рис. 4.7 приведен алгоритм теста частот. Рассмотрим его работу.

 

 

Рис. 4.7

 

В подпрограмме WWOD осуществляется ввод исходных данных для моделирования: N=0 - начальный такт моделирования; NZ - заданное число тактов моделирования (число опытов); m – число интервалов разбиения отрезка [0,1]. В подпрограмме WWOD также осуществляется обнуление необходимых для работы идентификаторов и счетчиков.

В блоке 2 происходит наращивание тактов моделирования. В блоке 3 датчиком случайных чисел генерируется число Х. Затем это число Х сравнивается с правыми границами интервалов разбиения отрезка [0,1]. Для этого в блоках 4 - 6 организован цикл по переменной I и сравнение числа Х с числом А, которое последовательно принимает значения: 1/m, 2/m, 3/m,…, m/m.

При выполнении условия Х£A содержимое соответствующего счетчика увеличивается на единицу (см. блок 7).

В блоке 8 осуществляются проверки выполнения числа опытов. Если датчик псевдослучайных, квазиравномерно распределенных чисел выполнил генерацию заданного числа опытов NZ, то в блоке 9 происходит вычисление случайной величины c2.

В подпрограмме WIWOD (см. блок 10) на экран дисплея выводятся значения случайной величины c2, счетчиков K[I], в которых подсчитаны частоты ni, а также могут быть выведены гистограммы эмпирических частостей =ni/N=K[I]/NZ, как это показано на рис. 4.8.

На рис. 4.8 приведены гистограммы для заданного числа опытов NZ =10000. Очевидно, что форма гистограммы частот должна совпадать с формой гистограммы частостей, т.к. эмпирические частости определяются по формуле =K[I]/NZ.

 

Рис. 4.8

 

Тесты пар частот. Пусть датчик псевдослучайных, квазиравномерно распределенных чисел генерирует последовательность чисел Х12,...,ХN. Рассматриваются последовательные пары случайных чисел. Квадрат со сторонами [0,1]на [0,1] делится на m2 частей, как это показано на рис. 4.9.

Если пары образовать в виде 12), (Х34)..., то каждая пара случайно попадает в одно из m2 делений квадратной таблицы. Пары 12), (Х34)... взаимно независимы и результат их попадания в одно из m2 делений квадратной таблицы оценивается эмпирической частотой nij.

 

Рис. 4.9

 

Если рассматривать теоретическое равномерное распределение случайной величины на отрезке [0,1] и образование из чисел таких же пар, то теоретические вероятности попадания в каждый из m2 делений квадратной таблицы одинаковы и равны значению 1/m2.

Для проверки согласия по данному тесту пар частот датчика псевдослучайных, квазиравномерно распределенных чисел и теоретического равномерного распределения полученные эмпирические частости 2nij/N,(i,j=), сравнивают с теоретическими вероятностями 1/m2. Согласие проверяется по критерию c2, т.к. случайная величина

(4.8)

распределена по закону c2 с (m2-m) степенями свободы, где N/2 - объем выборки пар случайных величин, генерированных датчиком псевдослучайных, квазиравномерно распределенных чисел. На рис. 4.10 приведен алгоритм для рассмотренного теста пар частот.

 

 

Рис. 4.10

 

В подпрограмме WWOD осуществляется ввод исходных данных для моделирования:

- N=0- начальный такт моделирования;

- NZ- заданное число тактов моделирования;

- m -число интервалов разбиения отрезка [0,1], происходит обнуление необходимых для работы идентификаторов и счетчиков.

В блоке 2 происходит наращивание тактов моделирования. В блоке 3 датчиком случайных чисел генерируется число Х. Затем в блоках 4 – 6 определяется индекс I. В блоке 7 датчиком случайных чисел генерируется второе число Х (тем самым образована пара 12)). В блоках 8 – 10 определяется индекс J.

В блоке 11 в счетчиках K[I,J] осуществляется подсчет частот попадания случайных пар kр) в соответствующие деления квадратной таблицы. В блоке 12 осуществляются проверки выполнения числа опытов. Если датчик псевдослучайных, квазиравномерно распределенных чисел выполнил генерацию заданного числа опытов NZ/2, то в блоке 13 происходит вычисление случайной величины c2. В подпрограмме WIWOD (см. блок 14) на экран дисплея выводятся значения случайной величины c2, счетчиков K[I,J], значения эмпирических частостей =2nij/N=2K[I,J]/NZ. Генерируемая выборка в данном методе используется неэффективно. Можно пары образовать в следующем виде 12),(Х23),(Х34),... .

Этот метод образования пар более эффективен, т.к. полнее использует выборку чисел, но из-за зависимостей пар случайная величина c2определится по формуле

], (4.9)

где .

Случайная величина c2будет определена распределением c2 с (m2-m) степенями свободы.

На рис. 4.11 приведен алгоритм для рассмотренного теста пар частот с эффективным использованием выборки.

 

 

Рис. 4.11

 

В данном алгоритме в блоке 2 генрируется число Х1, а затем в блоках 3 - 5 определяется индекс I. В блоке 6 происходит наращивание тактов моделирования. В блоке 7 датчиком случайных чисел генерируется число Х. В блоках 8 – 10 определяется индекс J (тем самым образована пара 12)). В блоке 11 в счетчиках K[I,J] осуществляется подсчет частот попадания случайных пар в деления квадратной таблицы. В блоке 12 индексу I присваивается значение индекса J. При N=2 будет образована пара 23) и т.д.