Добрый день. Я приступила сегодня к самостоятельному изучению курса "Моделирование систем". Хочу понять - необходимо ли отсылать мои решения практических заданий на сайт, (и если да - то где найти волшебную кнопку "Загрузить...") или практические задания остаются полностью на моей совести? (никто не проверяет, и отчётности по ним я предоставлять не обязана?) P.S.: тьютора я не брала |
Исследование качества генераторов случайных чисел
1.4. Исследование качества ГСЧ, сформированного по линейному конгруэнтному методу
Формирование случайных (псевдослучайных) чисел по линейному конгруэнтному методу основывается на следующем рекуррентном соотношении:
( 5.1) |
где:
— вновь формируемое число;
— множитель (мультипликативная константа);
— предыдущее число ( — назначаемое число);
— приращение (инкремент);
— модуль, бинарная операция для обозначения остатка от деления двух чисел;
— целочисленная константа [19]. Для -разрядных целых чисел . В самом простом случае принимается, что Массив случайных чисел из интервала будет формироваться следующим образом:
( 5.2) |
где — числа, определяемые по формуле (5.1).
В стандартной процедуре реализации линейного конгруэнтного метода (5.1) принимается, что — целые положительные числа. Приведем определение конгруэнтности двух чисел и : два числа и конгруэнтны (сравнимы) по модулю числа , если они дают одинаковые остатки при делении на этот модуль . Таким образом, по формуле (5.1) число будет конгруэнтно по модулю числу .
При выборе чисел придерживаются следующих правил:
- — должны быть взаимно простыми числами. Причем число определяет собой период числовой псевдослучайной последовательности: чем больше , тем длиннее последовательность псевдослучайных чисел;
- кратно для любого простого , являющегося делителем .
В качестве множителя рекомендуется принимать первообразный корень по модулю . Приведем следующее классическое определение.
Первообразный корень по модулю — натуральное число , такое, что наименьшее положительное число , для которого разность делится на (без остатка), совпадает с , где — число натуральных чисел, меньших и взаимно простых с .
Например, при первообразным корнем по модулю 7 является число 3. Действительно, , т. е. количеству чисел ряда , каждое из которых взаимно просто с числом 7.
Два числа называются взаимно простыми, если в качестве общего делителя они имеют только единицу.
Числа не делятся на 7 без остатка, и лишь делится на 7 (частное от деления равно 104).
В системе MATLAB формирование простых чисел производится с помощью функции (см. ). Для проверки, являются ли два числа взаимно простыми, можно применить функцию , которая определяет наибольший общий делитель для двух чисел.
В самом простом случае принимается, что При этом можно использовать следующие рекомендации по выбору параметров генератора:
- Начальное значение может быть произвольно.
- Выбор должен удовлетворять трем требованиям: , двоичные знаки не должны иметь очевидного шаблона.
- В качестве следует выбирать нечетное число, такое, что
Пример формирования модуля в командном окне MATLAB:
>> N = 7*10^6; >> m = primes(N); >> M = m(end) M = 6999997
Задание 4
- Полагая в формуле (5.1) , напишите в MATLAB программу формирования случайных чисел, приняв следующие числа для расчета модуля в зависимости от номера варианта:
- В качестве первого назначаемого случайного числа (в зависимости от номера варианта) примите следующие значения:
№ 1 № 1: , № 2: , № 3: , № 4: , № 5: , № 6: , № 7: , № 8: , № 9: , где — массив простых чисел, сформированный с помощью выражения № 2 № 1: , № 2: , № 3: , № 4: , № 5: , № 6: , № 7: , № 8: , № 9: , где — массив простых чисел, сформированный с помощью выражения № 3 № 1: , № 2: , № 3: , № 4: , № 5: , № 6: , № 7: , № 8: , № 9: , где — массив простых чисел, сформированный с помощью выражения № 4 № 1: , № 2: , № 3: , № 4: , № 5: , № 6: , № 7: , № 8: , № 9: , где — массив простых чисел, сформированный с помощью выражения - Вычислите период формируемой случайной последовательности (с помощью функции ).
- Произведите статистический анализ созданного ГСЧ по линейному конгруэнтному методу.
- Постройте гистограммы полученных распределений случайных чисел с помощью функции .
- Постройте функции плотности и распределения для сформированных выборок случайных чисел. Совместите диаграммы с теоретическими функциями.
2. Статистическое тестирование выборки псевдослучайных чисел по критерию Колмогорова–Смирнова
По критерию Колмогорова–Смирнова (КС-критерию) осуществляется проверка простой статистической гипотезы (нулевой гипотезы) о том, что функция распределения случайной величины совпадает с некоторой известной функцией при некотором уровне значимости . КС-критерием можно пользоваться уже при объеме выборки .
В системе MATLAB КС-критерий реализован функцией .
Рассмотрим пример использования функции для проверки гипотезы о том, что функция распределения выборки, сформированной с помощью функции , соответствует функции распределения экспоненциального закона с параметром 1 той же самой выборки.
Программное решение примера в командном окне MATLAB:
>> x = rand(25,1); F0 = expcdf(x,1); >> H = kstest(x,[x,F0]) H = 1
Полученный результат означает, что нулевая гипотеза отвергается, т. е. выборочная функция равномерного распределения в интервале имеет значительные расхождения с предполагаемой функцией экспоненциального распределения с уровнем значимости = 0.05 (по умолчанию). Если закладывается другой уровень значимости, отличный от 0.05, то тогда он должен быть введен в функцию . На том же примере это будет выглядеть так (с уровнем значимости 0.012):
>> x = rand(25,1); F0 = expcdf(x,1); >> H = kstest(x,[x,F0],0.012) H = 1
По-прежнему нулевая гипотеза отвергается.
Рассмотрим пример использования функции для проверки гипотезы о том, что функция распределения выборки, сформированной с помощью , соответствует функции распределения равномерного закона из интервала той же самой выборки.
Решение примера в командном окне MATLAB:
>> x = rand(25,1); F0 = unifcdf(x,0,1); >> H = kstest(x,[x,F0]) H = 0
Нулевая гипотеза о равномерном распределении выборки принимается.
Задание 5
- По критерию Колмогорова–Смирнова протестируйте выборки случайных чисел, сформированных по методу срединных квадратов.
- По критерию Колмогорова–Смирнова протестируйте выборки случайных чисел объема 100, 500, 1000, сформированных по линейному конгруэнтному методу.