Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsiyi_MOD.doc
Скачиваний:
5
Добавлен:
01.04.2025
Размер:
577 Кб
Скачать
☆

2. Методи отримання псевдовипадкових чисел.

    Метод серединних квадратів - це одна з перших процедур, яку запропонували в 1946р. Фон Нейман та Метрополіс. В наш час цей метод має лише історичний інтерес, тому що його роботу важко проаналізувати, працює він порівняно повільно й не дає статистично задовільних результатів. Наведемо основні кроки алгоритму, який реалізує даний метод:

  1. Взяти довільне п - значне число.

  2. Піднести це число в квадрат, і , якщо потрібно, доповнити його ліворуч нулями до 2п - значного числа.

  3. Взяти n цифр з середини цього числа як наступне випадкове число.

  4. Перейти до кроку 2.

    Щоб отримати числа, рівномірно розподілені в інтервалі (0,1), достатньо промасштабувати (тобто поділити на 10) результати, знайдені за допомогою описаного раніше алгоритму. Обравши за початкове число 2152, в результаті роботи алгоритму отримаємо послідовність

..........................................................................................

Масштабуючи, дістанемо 0,2152; 0,63115; 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 максимальний період для двійкових машин P = 2b-2 = m/4, для десяткових P = 5*10d-2 = m/20. Для двійкових машин значення а вибирається із співвідношення  , де Т - довільне ціле додатне; х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):

    Період генератора 24-2 = 4     Змішаний конгруентний метод, який запропонував Томсон, використовує формулу 

    З обчислювальної точки зору змішаний метод складніший за мультиплікативний на одну операцію додавання, але можливість вибору додаткового параметра С дозволяє зменшити можливу кореляцію між генерованими числами.     Адитивний конгруентний метод працює за формулою

    При х0 = 0 та х1 = 1 цей алгоритм призводить до послідовності Фібоначчі. Використання адитивного генератора, який працює за формулою 

дає кращі результати, але потребує більшого обсягу пам’яті ЕОМ внаслідок необхідності збереження значень, проміжних між хі-к та хі. Якісно цей генератор працює при значенні к = 16.     Комбіновані методи генерують "ще більш випадкові" послідовності за рахунок зростання часу генерації. Так, наприклад, можна використати два генератори псевдовипадкових чисел, які генерують відповідно послідовності х0, х1, ..., х та у0, у1, ... псевдовипадкових чисел, що мають значення від нуля до m-1 незалежними способами, і отримати вихідне псевдовипадкове число із співвідношення 

    При цьому бажано, щоб довжини періодів {xn} {yn} були взаємно простими числами.     Розглянуті методи отримання псевдовипадкових чисел мають певні переваги та недоліки, що дозволяє в кожному конкретному випадку обрати найбільш доцільний метод. Крім того, генератори псевдовипадкових чисел чутливі до вибору початкових значень і констант. Найчастіше в моделюванні застосовується звичайний мультиплікативний генератор, який має високі статистичні характеристики та швидкодію.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]