
- •Моделювання систем методичні вказівки
- •1. Мета
- •2. Теоретичні положення
- •2.1.1. Основні способи генерації псевдовипадкових чисел
- •2.1.2. Вимоги до генераторів псевдовипадкових чисел, рівномірно розподілених в інтервалі (0,1)
- •2.1.3. Методи отримання псевдовипадкових чисел
- •2.1.4. Побудова гістограми
- •Порядок виконання роботи
- •Контрольні запитання
- •Варіанти індивідуальних завдань
- •Література
- •Моделювання систем методичні вказівки
2.1.3. Методи отримання псевдовипадкових чисел
Метод серединних квадратів - це одна з перших процедур, яку запропонували в 1946р. Фон Нейман та Метрополіс. В наш час цей метод має лише історичний інтерес, тому що його роботу важко проаналізувати, працює він порівняно повільно й не дає статистично задовільних результатів. Наведемо основні кроки алгоритму, який реалізує даний метод:
Взяти довільне п - значне число.
Піднести це число в квадрат, і , якщо потрібно, доповнити його ліворуч нулями до 2п - значного числа.
Взяти n цифр з середини цього числа як наступне випадкове число.
Перейти до кроку 2.
Щоб отримати числа, рівномірно розподілені в інтервалі (0,1), достатньо промасштабувати (тобто поділити на 10n) результати, знайдені за допомогою описаного вище алгоритму. Обравши за початкове число 2152, в результаті роботи алгоритму отримаємо послідовність
...........................................................................................................
Масштабуючи, дістанемо 0,2152; 0,6311; 0,8287 і т.д.
Часто послідовність виявляється надто короткою:
У цій послідовності випадковість взагалі відсутня, тому що починаючи з другого числа весь час буде генеруватись 2500.
Конгруентні методи будуються на основі кількох рекурентних формул з використанням поняття конгруентності - порівнянності чисел по модулю. Два числа А та В конгруентні по модулю m (m - ціле число) тоді і лише тоді, коли існує таке ціле число К, що А - В = К m, або, іншими словами, при діленні на m числа А та В мають ідентичну остачу. Так, наприклад, 5~ 7 /mod 2/, 10 ~ 14 /mod 4/. Будь-який програмний генератор, що використовує функціональне співвідношення, є періодичним, тобто починаючи з деякого числа генерована послідовність повторюється.
Мультиплікативний конгруентний метод ґрунтується на використанні формули
де а, m – невід’ємні цілі числа.
Значення
а,
m і
початкове
значення х0
необхідно вибирати такими, щоб забезпечити
максимальний період і мінімальну
кореляцію між генерованими числами.
Для двійкової машини значення модуля
m=2b,
для десяткової m=10d,
де b,
d
- число відповідно двійкових (біт) та
десяткових цифр у машинному слові
використовуваної ЕОМ. При правильному
виборі а
та х0
максимальний період для двійкових машин
,
для десяткових
.
Для двійкових машин значення а
вибирається з співвідношення
,
де Т
- довільне ціле додатне; х0
- додатне
непарне число. Для десяткової машини
,
де Q
набуває одне із значень
(3,
11, 13, 19, 21, 27, 29, 37, 53, 59, 61, 67, 77, 83, 91);
х0
- довільне непарне ціле, яке не ділиться
на 5. Вибір модуля, який дорівнював би
довжині машинного слова ЕОМ, приводить
до прискорення роботи алгоритму, оскільки
тоді обчислення остачі від ділення на
m зводиться
до виділення
b молодших
розрядів діленого, а перетворення цілого
хі
в раціональний
дріб на інтервалі (0,1) здійснюється
підстановкою ліворуч від хі
двійкової
або десяткової коми. Розглянемо приклад
побудови датчика для 4 - розрядної
двійкової машини. Використовуючи
наведені раніше рекомендації, вибираємо
b=4,
х0=7
(0111),
а=5
(0101):
Період генератора 2 4-2= 4
Змішаний конгруентний метод, який запропонував Томсон, використовує формулу
З обчислювальної точки зору змішаний метод складніший за мультиплікативний на одну операцію додавання, але можливість вибору додаткового параметра с дозволяє зменшити можливу кореляцію між генерованими числами.
Адитивний конгруентний метод працює за формулою
При х0 = 0 та х1 = 1 цей алгоритм призводить до послідовності Фібоначчі. Використання адитивного генератора, який працює за формулою
дає кращі результати, але потребує більшого обсягу пам’яті ЕОМ внаслідок необхідності збереження значень, проміжних між хі - к та хі. Якісно цей генератор працює при значенні к = 16.
Комбіновані методи генерують "ще більш випадкові" послідовності за рахунок зростання часу генерації. Так, наприклад, можна використати два генератори псевдовипадкових чисел, які генерують відповідно послідовності х0, х1, ..., хn та у0, у1, ...,yn псевдовипадкових чисел, що мають значення від нуля до m-1, незалежними способами і отримати вихідне псевдовипадкове число із співвідношення
При цьому бажано, щоб довжини періодів {xn} {yn} були взаємно простими числами.
Розглянуті методи отримання псевдовипадкових чисел мають певні переваги та недоліки, що дозволяє в кожному конкретному випадку обрати найбільш доцільний метод. Крім того, генератори псевдовипадкових чисел чутливі до вибору початкових значень і констант. Найчастіше в моделюванні застосовується звичайний мультиплікативний генератор, який має високі статистичні характеристики та швидкодію.