к. т. н. Сопільник О. В., Герасимов В. В.
ГЕНЕРАЦІЯ
ВИПАДКОВИХ ЧИСЕЛ ІЗ ЗАДАНИМИ ЗАКОНАМИ РОЗПОДІЛУ
Дніпропетровський національний університет ім. О. Гончара
Псевдовипадкові числа з різними законами розподілу широко використовуються при
імітаційному моделюванні процесів неруйнівного контролю якості композитних
матеріалів при наявності завад різної фізичної природи. Зокрема, мова йде про контроль
поверхневих та підповерхневих дефектів в умовах значної шорсткості поверхні
виробу, випадкової зміни відстані між давачем та поверхнею тощо. При цьому в
інформаційному сигналі вихорострумового давача присутні шуми, які спектрально
вельми мало відрізняються від спектру корисного сигналу і, таким чином, виникає
проблема його обробки з метою виявлення валідної інформації.
Тому
метою даної роботи є розробка
генератора випадкових чисел з різними поширеними на практиці законами розподілу,
який повинен забезпечувати можливість візуалізації результатів при моделюванні
реальних ситуацій, пов'язаних із дефектометрією. Програмне забезпечення створене
на основі прикладного пакету MаtLab з використанням
відповідних бібліотек, має функціонально закінчений характер, може застосовуватися автономно, у
вигляді окремого виконавчого файлу і потребує близько 200 Мб пам'яті, що суттєво менше, ніж
при встановленні повної версії MatLab.
Генератор псевдовипадкових чисел (ГПВЧ) - алгоритм, що генерує послідовність,
елементи якої майже незалежні один від одного і відповідають заданому закону. На
практиці у більшості випадків застосовують програмні методи генерації. Одним з таких в середовищі MatLab є параметрична функція генерування
випадкових чисел – random [1-3].
Коли мова йдеться, наприклад, про найбільш поширений
нормальний закон, маємо:
NORMRND - функція генерації псевдовипадкових чисел за нормальним законом
розподілу [4].
Синтаксис:
R
= normrnd (MU, SIGMA)
R
= normrnd (MU, SIGMA, m)
R
= normrnd (MU, SIGMA, m, n)
Опис:
R = normrnd (MU, SIGMA) - призначена для генерації випадкового числа за нормальним
законом для кожної пари параметрів MU (математичного очікування) і SIGMA (середньоквадратичного відхилення). Розмірність векторів або матриць
параметрів MU і SIGMA повинна бути однаковою.
R = normrnd (MU, SIGMA, m) дозволяє отримати вектор випадкових чисел на m елементів, розподілених нормально
для параметрів MU і SIGMA, де m - вектор розмірністю 1×m визначає розмірність матриці R.
R = normrnd (MU,SIGMA,m,n) дозволяє отримати матрицю випадкових нормальних чисел
розмірністю m×n елементів для параметрів MU, SIGMA.
Застосування функції генерації псевдовипадкових чисел:
- генерація одного числа,
що відповідає заданій парі значень пара-метрів MU, SIGMA.
>> MU =0;
>> SIGMA =1;
>> R = normrnd (MU, SIGMA)
R = - 0.2953 - результат.
>> MU = [0 1 2 3];
>> SIGMA = [1 2 3 4];
>> R = normrnd (MU, SIGMA)
R = 1.4561,
2.8025, 0.6664, 3.3873 -
результат.
- генерація вектору випадкових чисел розмірністю 1×5.
>> MU =0;
>> SIGMA =1;
>> m=[1 5]; - створення матриці розміром 1×5;
>> R = normrnd(MU,SIGMA,m) - заповнення матриці m випадковими числами, які розподілені нормально.
R = -0.0228, 0.1106,
0.8128, -1.0091 -1.0046 – результат.
- генерація матриці випадкових чисел розмірністю 4×4.
>> MU =0;
>> SIGMA =1;
>> m= [4 4];
>> R = normrnd (MU, SIGMA, m)
R = -0.6422
1.5489 -0.5539 -2.5996
-0.1804 -0.0442 0.9324 0.7801
0.7179 -0.0297 -1.3158 0.6029
0.3014 -0.3821 -0.3015 0.9428
У складі пакету MATLAB є велика кількість функцій для побудови графіків, в тому числі
тривимірних, візуального аналізу даних.
Вбудоване середовище розробки дозволяє створювати графічні
інтерфейси користувача з різними елементами управління, такими як кнопки, поля
введення та ін. За допомогою компонента MATLAB Compiler ці графічні
інтерфейси можуть бути перетворені в самостійні програми, для запуску яких на
інших комп'ютерах необхідно встановити
бібліотеку MATLAB Component Runtime.
Для перевірки якості генерації застосовується, зокрема функція plot для відображення графіків та гістограм. Крім того, випадкова послідовність
повинна задовольняти ряду критеріїв, для чого
здійснюють перевірки на рівномірність та статистичну незалежність розподілу, що
генерується (Рис.1).
Генератор повинен видавати близькі до наступних значення статистичних
параметрів, характерних, наприклад, для рівномірного закону:
|
- математичне
очікування; |
|
- середньоквадратичне відхилення. |
Необхідно обирати такий
обсяг вибірки, щоб кількість чисел, які потрапили в інтервал (0; 0.5), була
приблизно рівною кількості чисел, які потрапили в
інтервал (0.5; 1).
Рис.
1. Графічна оцінка якості генерації за
допомогою гістограми та графіка ідеального нормального розподілу
Аналогічно створюються
генератори випадкових чисел і для інших законів розподілу:рівномірний закон розподілу (unifrnd); експоненціальний закон розподілу (exprnd); трикутний закон розподілу (normrnd); релеєвський закон розподілу (raylrnd); логнормальний закон розподілу (lognrnd); логрівномірний закон розподілу (unifrnd).
Створений програмний продукт досить простий у
використанні і генерує послідовність
випадкових чисел за заданим законом розподілу, показує якість генерації для
кожної окремо взятої послідовності та дає змогу зберегти послідовність у
текстовий файл.
Спочатку користувач
обирає потрібний закон розподілу. Необхідно
вказати вхідні дані: кількість елементів та інтервалів на гістограмі (за замовчуванням
– 10 інтервалів). Інші вхідні параметри змінюються в залежності від закону
розподілу. При натисканні на клавішу «Генерація» створюється необхідна
послідовність. Якщо були вказані не всі вхідні дані, то відображується повідомлення,
який саме параметр необхідно вказати (Рис.2).
Рис. 2. Головне окно програми
Коли всі поля заповнені і вказані всі вхідні дані,
генерується послідовність і одразу виводиться гістограмма для оцінки якості процесу.
Червоним кольором на гістограммі зображується графік ідеально сгенерованої
послідовності для даного закону (Рис. 3).
Рис. 3. Робоче вікно генератора
Після завершення процесу генерації натискаємо клавішу
«Зберегти у файл», що дозволяє зберегти послідовність, як текстовий файл на
комп’ютері і обрати для цього відповідний каталог.
ЛІТЕРАТУРА
1.Консультаційний центр MatLab. Список функцій. http://matlab.
exponenta. ru/statist/book2/index.php
2. Генерація
випадкових чисел в MatLab. http://www.edu. nstu.ru /courses/
msos/lab3.html
3.ФункціїMatLab.http://www.nsu.ru/matlab/MatLab_RU/statist/book2/index.asp.htm
4. MATLAB GUI Tutorial. http://blinkdagger.com/matlab/matlab-gui-tutorial-plotting-data-axes/