- Теоретична частина
- Практична частина
- 1.1. Аналіз якості ГСЧ системи MATLAB
- 1.2. Дослідження якості ГСЧ, сформованого за методом Фібоначчі
- 1.3. Дослідження якості ГСЧ, сформованого за методом серединних квадратів
Анотація: Мета роботи: вивчити і практично освоїти оцінки якості генераторів випадкових чисел (ГВЧ) в різних системах програмування по заданих теоретичним показниками, за допомогою критеріїв згоди і за допомогою нормованої автокореляційної функції на предмет незалежності випадкових чисел.
Теоретична частина
У практиці моделювання та особливо в практиці статистичних випробувань доводиться використовувати випадкові послідовності або просто випадкові числа. При моделюванні систем на ЕОМ програмна імітація випадкових впливів будь-якої складності зводиться до генерування деяких стандартних (базових) процесів і до їх подальшого функціональному перетворенню. Отримання випадкових чисел з необхідним законом розподілу зазвичай виконується в два етапи:
- Формування фізичним або програмним методом випадкового числа , Рівномірно розподіленого на
- Програмний перехід від до випадкового числа , Має необхідний розподіл [16] .
У зв'язку з цим особливого значення набувають випадкові числа, рівномірно розподілені в інтервалі . Наприклад, генерування експоненціально розподілених випадкових чисел може бути виконано за формулою
де:
- параметр експоненціального закону;
- рівномірно розподілене випадкове число з інтервалу .
Існують фізичні і програмні датчики (генератори) випадкових чисел. Програмні датчики випадкових чисел фактично генерують псевдовипадкові числа. Згідно Лемеру, послідовність псевдовипадкових чисел можна вважати випадковою, якщо "кожен її член непередбачуваний для необізнаного і вона задовольняє ряду традиційних статистичних тестів".
Отримані за допомогою програмних методів випадкові послідовності в ідеалі повинні складатися з:
- рівномірно розподілених,
- статистично незалежних,
- відтворюваних,
- неповторяющихся чисел.
Практична частина
1. Дослідження якості генераторів випадкових чисел (ГВЧ) за критерієм відхилення математичного очікування, дисперсії середнього квадратичного відхилення
Відомо, що при рівномірному законі розподілу випадкової безперервної величини в інтервалі відповідне математичне очікування , дисперсія і середньоквадратичне відхилення мають такі теоретичні значення: ; ; ( ).
Критерій полягає в порівнянні теоретичних параметрів рівномірного розподілу з реальними значеннями, отриманими для кінцевої вибірки.
1.1. Аналіз якості ГСЧ системи MATLAB
В системі MATLAB всіх версій використовується функція , Що реалізує рівномірно розподілені числа в інтервалі .
Середнє значення масиву чисел визначається функцією , Дисперсія - функцією , Середньоквадратичне відхилення (стандартне відхилення) - функцією (Див. ).
Програмний код аналізу випадкових чисел:
clear, clc %% Генерування вибірки 500 випадкових чисел x = rand (500, 1); %% Обчислення середнього значення вибірки m1 = mean (x) %% Обчислення дисперсії даної вибірки s2 = var (x) %% Обчислення середнього квадратичного відхилення s = std (x) %% Розрахунок відносних похибок у відсотках %% по математичному очікуванню m = 0.5; Dm = abs ((mean (x) - m) / m) * 100; fprintf ( '\ n Відносна похибка по математичному очікуванню:% g %% \ n', Dm); %% по дисперсії d = 1/12; Dd = abs ((var (x) - d) / d) * 100; fprintf ( 'Відносна похибка по дисперсії:% g %% \ n', Dd); %% по середньому квадратичному відхиленню sd = sqrt (d); Ds = abs ((std (x) - sqrt (1/12)) / sqrt (1/12)) * 100; fprintf ( 'Відносна похибка по стандартному відхиленню:% g %% \ n', Ds); %% Генерування додаткової вибірки y = rand (500, 1); %% Діаграма оцінки рівномірності випадкових чисел fig1 = figure (1); set (fig1, 'name', 'Випадкові числа функції rand') plot (x, y, 'o', 'markersize', 4); str = '\ bf \ fontsize {11} \ fontname {times} Перевірка на рівномірність випадкових чисел'; title (str) xlabel ( '\ bf \ fontsize {11} \ fontname {times} Random numbers') ylabel ( '\ bf \ fontsize {11} \ fontname {times} Random numbers')
У програмі виконується побудова діаграми візуальної оцінки рівномірності випадкових чисел. Числа-кружечки на діаграмі повинні рівномірно заповнити квадрат зі стороною, що дорівнює одиниці. на Мал. 5.1 наведено приклад перевірки випадкової послідовності на рівномірність розподілу в інтервалі .
Мал.5.1.
Перевірка рівномірності випадкових чисел для функції rand
Завдання 1
Проведіть в залежності від номера комп'ютера статистичне дослідження функції при різних обсягах вибірки: малих ; середніх ; великих . Результати випробувань усереднити.
Комп'ютер № 1: 11 випробувань (n: 24, 142, 600); Комп'ютер № 2: 12 випробувань (n: 22, 144, 650); Комп'ютер № 3: 13 випробувань (n: 20, 146, 700); Комп'ютер № 4: 14 випробувань (n: 18, 148, 750); Комп'ютер № 5: 15 випробувань (n: 16, 150, 800); Комп'ютер № 6: 16 випробувань (n: 14, 152, 850); Комп'ютер № 7: 17 випробувань (n: 12, 154, 900); Комп'ютер № 8: 18 випробувань (n: 10, 156, 950); Комп'ютер № 9: 19 випробувань (n: 19, 149,1000). Комп'ютер № 10: 20 випробувань (n: 20, 150, 1010).
- Побудуйте графік зміни відносних похибок середнього, дисперсії, стандартного відхилення від числа випробувань.
- Пункт 1 завдання виконайте для вибірок, сформованих в системах EXCEL, DELPHI (консольний додаток), PASCAL, С, GPSS / PC. Сформовані вибірки імпортуйте в MATLAB, де зробіть необхідний аналіз. Формування вибірки випадкових чисел в GPSS / PC виконайте по номеру датчика випадкових чисел, який відповідає номеру комп'ютера ( .).
- Побудуйте гістограми в системі MATLAB для сформованих вибірок (отриманих в різних системах) за допомогою графічної функції (Див. ).
Примітка. В системі GPSS / PC сформуйте вибірки тільки малих і середніх обсягів (відповідно до номера комп'ютера).
1. Для фіксації випадкових чисел в GPSS / PC можна використовувати оператори , і блок .
1.2. Дослідження якості ГСЧ, сформованого за методом Фібоначчі
Генератор випадкових чисел, який використовує метод Фібоначчі, застосовувався на початку 50-х років ХХ століття [9] . Рекурентне співвідношення Фібонначі має вигляд
,
де:
- цілі числа, що лежать між нулем і деяким великим числом , Який називається модулем;
- порядковий номер числа [9] .
Для отримання випадкових чисел з інтервалу слід обчислити дріб
Програмний код формування випадкових чисел за методом Фібоначчі:
clear, clc, close all N = 500; %% кількість генеруються чисел M = 2 ^ 30; %% модуль %% 1-я послідовність випадкових чисел X0 = 12345; %% 1-е довільне число X1 = 67890; %% 2-е довільне число for n = 1: NX = mod (X1 + X0, M); %% наступне число X0 = X1; X1 = X; Zx (n, 1) = X; end Rx = Zx / M; mf = mean (Rx); fprintf ( '\ n Середнє вибіркове для методу Фібоначчі:% g %% \ n', mf); sf2 = var (Rx); fprintf ( 'Вибіркова дисперсія для методу Фібоначчі:% g %% \ n', sf2); sf = std (Rx); fprintf ( 'Вибіркове стандартне відхилення:% g %% \ n', sf); %% Розрахунок відносних похибок у відсотках m = 0.5; fprintf ( '\ n Відносна похибка по математичному очікуванню:% g %% \ n', abs ((mf - m) / m) * 100); d = 1/12; fprintf ( 'Відносна похибка по дисперсії:% g %% \ n', abs ((sf2 - d) / d) * 100); %% по середньому квадратичному відхиленню sd = sqrt (d); fprintf ( 'Відносна похибка по стандартному відхиленню:% g %% \ n', abs ((sf - sd) / sd) * 100); %% 2-я послідовність випадкових чисел Y0 = 333; %% 1-е довільне число Y1 = 123; %% 1-е довільне число for n = 1: NY = mod (Y1 + Y0, M); %% наступне число Y0 = Y1; Y1 = Y; Zy (n, 1) = Y; end Ry = Zy / M; %% Діаграма оцінки рівномірності випадкових чисел fig2 = figure (2); set (fig2, 'name', 'Випадкові числа Фібоначчі') plot (Rx, Ry, 'o', 'markersize', 4); str = '\ bf \ fontsize {11} \ fontname {times} Перевірка на рівномірність випадкових чисел'; title (str) xlabel ( '\ bf \ fontsize {11} \ fontname {times} Random numbers') ylabel ( '\ bf \ fontsize {11} \ fontname {times} Random numbers')
Приклад виконання програми (без діаграми)
Середнє вибіркове для методу Фібоначчі: 0.49687% Вибіркова дисперсія для методу Фібоначчі: 0.0861675% Вибіркове стандартне відхилення: 0.293543% Відносна похибка по математичному очікуванню: 0.626048% Відносна похибка по дисперсії: 3.40103% Відносна похибка по стандартному відхиленню: 1.6863%
завдання 2
- Напишіть програму формування простих тризначних чисел з метою їх використання в якості початкових чисел в методі Фібоначчі. Розрахуйте відносні похибки по математичному очікуванню, дисперсії, стандартного відхилення.
- Напишіть програму формування випадкових чисел Фібоначчі без допоміжних масивів і .
- Побудуйте гістограми в системі MATLAB для сформованих вибірок ( і ) За допомогою графічної функції (Див. ) З розбивкою графічного вікна за допомогою функції (Див. ).
1.3. Дослідження якості ГСЧ, сформованого за методом серединних квадратів
Метод серединних квадратів був запропонований Нейманом [19] і полягає в наступному: вибирається число, менше 1, розрядністю . Воно зводиться в квадрат. З отриманого результату (розрядність якого повинна бути , Якщо немає, то додаються нулі праворуч від отриманого числа) вибираються чисел з середини отриманого після зведення в квадрат числа. Число записується після десяткового дробу. Далі все повторюється.
Для прикладу виберемо 4-розрядний ( ) число . Після зведення в квадрат одержимо число, рівне 0.01522756. З нього вибираємо чотири серединні цифри, т. Е. 5227. Отримуємо нове випадкове (псевдовипадкове) число . Описані дії відобразимо в наступному вигляді:
і так далі.
завдання 3
- Напишіть програму формування випадкових чисел за методом серединних.
- Початкове число виберіть (за вказівкою викладача) з наступного списку, наведеного в таблиці 5.1 .
Примітка. Для перевірки періодичності (неперіодичних) формованої випадкової послідовності можна застосувати, наприклад, функцію (Див. ).
- Проведіть, в залежності від номера комп'ютера, статистичне дослідження ГСЧ (обчислення середнього значення вибірки, дисперсії, стандартного відхилення вибірки) при різних обсягах вибірки: малих , середніх , великих . Результати випробувань усереднити і порівняйте з аналогічними результатами, які проведені для вибірки, сформованої за допомогою функції rand системи MATLAB. Комп'ютер № 1: (обсяг вибірки: 24, 142, 600); Комп'ютер № 2: (обсяг вибірки: 22, 144, 650); Комп'ютер № 3: (обсяг вибірки: 20, 146, 700); Комп'ютер № 4: (обсяг вибірки: 18, 148, 750); Комп'ютер № 5: (обсяг вибірки: 16, 150, 800); Комп'ютер № 6: (обсяг вибірки: 14, 152, 850); Комп'ютер № 7: (обсяг вибірки: 12, 154, 900); Комп'ютер № 8: (обсяг вибірки: 10, 156, 950); Комп'ютер № 9: (обсяг вибірки: 17, 157, 999); Комп'ютер № 10: (обсяг вибірки: 19, 158, 1010).
- Побудуйте в системі MATLAB гістограми для сформованих вибірок випадкових чисел за методом серединних квадратів і порівняйте з гістограмою для вибірок, сформованих за допомогою функції системи MATLAB.
- Побудуйте гістограми для сформованих вибірок.
- Побудуйте діаграму візуального контролю рівномірного заповнення квадрата зі стороною, що дорівнює одиниці.