Статьи

НОУ ІНТУЇТ | лекція | Дослідження якості генераторів випадкових чисел

  1. Теоретична частина
  2. Практична частина
  3. 1.1. Аналіз якості ГСЧ системи MATLAB
  4. 1.2. Дослідження якості ГСЧ, сформованого за методом Фібоначчі
  5. 1.3. Дослідження якості ГСЧ, сформованого за методом серединних квадратів

Анотація: Мета роботи: вивчити і практично освоїти оцінки якості генераторів випадкових чисел (ГВЧ) в різних системах програмування по заданих теоретичним показниками, за допомогою критеріїв згоди і за допомогою нормованої автокореляційної функції на предмет незалежності випадкових чисел.

Теоретична частина

У практиці моделювання та особливо в практиці статистичних випробувань доводиться використовувати випадкові послідовності або просто випадкові числа. При моделюванні систем на ЕОМ програмна імітація випадкових впливів будь-якої складності зводиться до генерування деяких стандартних (базових) процесів і до їх подальшого функціональному перетворенню. Отримання випадкових чисел з необхідним законом розподілу зазвичай виконується в два етапи:

  1. Формування фізичним або програмним методом випадкового числа Анотація: Мета роботи: вивчити і практично освоїти оцінки якості генераторів випадкових чисел (ГВЧ) в різних системах програмування по заданих теоретичним показниками, за допомогою критеріїв згоди і за допомогою нормованої автокореляційної функції на предмет незалежності випадкових чисел , Рівномірно розподіленого на
  2. Програмний перехід від до випадкового числа , Має необхідний розподіл [16] .

У зв'язку з цим особливого значення набувають випадкові числа, рівномірно розподілені в інтервалі У зв'язку з цим особливого значення набувають випадкові числа, рівномірно розподілені в інтервалі . Наприклад, генерування експоненціально розподілених випадкових чисел може бути виконано за формулою

де:

- параметр експоненціального закону; - параметр експоненціального закону;

- рівномірно розподілене випадкове число з інтервалу - рівномірно розподілене випадкове число з інтервалу .

Існують фізичні і програмні датчики (генератори) випадкових чисел. Програмні датчики випадкових чисел фактично генерують псевдовипадкові числа. Згідно Лемеру, послідовність псевдовипадкових чисел можна вважати випадковою, якщо "кожен її член непередбачуваний для необізнаного і вона задовольняє ряду традиційних статистичних тестів".

Отримані за допомогою програмних методів випадкові послідовності в ідеалі повинні складатися з:

  • рівномірно розподілених,
  • статистично незалежних,
  • відтворюваних,
  • неповторяющихся чисел.

Практична частина

1. Дослідження якості генераторів випадкових чисел (ГВЧ) за критерієм відхилення математичного очікування, дисперсії середнього квадратичного відхилення

Відомо, що при рівномірному законі розподілу випадкової безперервної величини в інтервалі Відомо, що при рівномірному законі розподілу випадкової безперервної величини в інтервалі   відповідне математичне очікування   , дисперсія   і середньоквадратичне відхилення   мають такі теоретичні значення:   ;   ;   (   ) відповідне математичне очікування , дисперсія і середньоквадратичне відхилення мають такі теоретичні значення: ; ; ( ).

Критерій полягає в порівнянні теоретичних параметрів рівномірного розподілу з реальними значеннями, отриманими для кінцевої вибірки.

1.1. Аналіз якості ГСЧ системи MATLAB

В системі 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. Проведіть в залежності від номера комп'ютера статистичне дослідження функції Проведіть в залежності від номера комп'ютера статистичне дослідження функції   при різних обсягах вибірки: малих   ;  середніх   ;  великих при різних обсягах вибірки: малих ; середніх ; великих . Результати випробувань усереднити.

    Комп'ютер № 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).

  2. Побудуйте графік зміни відносних похибок середнього, дисперсії, стандартного відхилення від числа випробувань.
  3. Пункт 1 завдання виконайте для вибірок, сформованих в системах EXCEL, DELPHI (консольний додаток), PASCAL, С, GPSS / PC. Сформовані вибірки імпортуйте в MATLAB, де зробіть необхідний аналіз. Формування вибірки випадкових чисел в GPSS / PC виконайте по номеру датчика випадкових чисел, який відповідає номеру комп'ютера ( .).
  4. Побудуйте гістограми в системі MATLAB для сформованих вибірок (отриманих в різних системах) за допомогою графічної функції (Див. ).

Примітка. В системі GPSS / PC сформуйте вибірки тільки малих і середніх обсягів (відповідно до номера комп'ютера).

1. Для фіксації випадкових чисел в GPSS / PC можна використовувати оператори 1 , і блок .

1.2. Дослідження якості ГСЧ, сформованого за методом Фібоначчі

Генератор випадкових чисел, який використовує метод Фібоначчі, застосовувався на початку 50-х років ХХ століття [9] . Рекурентне співвідношення Фібонначі має вигляд

, ,

де:

- цілі числа, що лежать між нулем і деяким великим числом   , Який називається модулем; - цілі числа, що лежать між нулем і деяким великим числом , Який називається модулем;

- порядковий номер числа   [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

  1. Напишіть програму формування простих тризначних чисел з метою їх використання в якості початкових чисел в методі Фібоначчі. Розрахуйте відносні похибки по математичному очікуванню, дисперсії, стандартного відхилення.
  2. Напишіть програму формування випадкових чисел Фібоначчі без допоміжних масивів і .
  3. Побудуйте гістограми в системі MATLAB для сформованих вибірок ( і ) За допомогою графічної функції (Див. ) З розбивкою графічного вікна за допомогою функції (Див. ).
1.3. Дослідження якості ГСЧ, сформованого за методом серединних квадратів

Метод серединних квадратів був запропонований Нейманом [19] і полягає в наступному: вибирається число, менше 1, розрядністю Метод серединних квадратів був запропонований Нейманом   [19]   і полягає в наступному: вибирається число, менше 1, розрядністю . Воно зводиться в квадрат. З отриманого результату (розрядність якого повинна бути , Якщо немає, то додаються нулі праворуч від отриманого числа) вибираються чисел з середини отриманого після зведення в квадрат числа. Число записується після десяткового дробу. Далі все повторюється.

Для прикладу виберемо 4-розрядний ( Для прикладу виберемо 4-розрядний (   ) число ) число . Після зведення в квадрат одержимо число, рівне 0.01522756. З нього вибираємо чотири серединні цифри, т. Е. 5227. Отримуємо нове випадкове (псевдовипадкове) число . Описані дії відобразимо в наступному вигляді:

і так далі.

завдання 3

  1. Напишіть програму формування випадкових чисел за методом серединних.
  2. Початкове число виберіть (за вказівкою викладача) з наступного списку, наведеного в таблиці 5.1 .

Примітка. Для перевірки періодичності (неперіодичних) формованої випадкової послідовності можна застосувати, наприклад, функцію Примітка (Див. ).

  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).
  2. Побудуйте в системі MATLAB гістограми для сформованих вибірок випадкових чисел за методом серединних квадратів і порівняйте з гістограмою для вибірок, сформованих за допомогою функції системи MATLAB.
  3. Побудуйте гістограми для сформованих вибірок.
  4. Побудуйте діаграму візуального контролю рівномірного заповнення квадрата зі стороною, що дорівнює одиниці.

Новости