Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Алгоритм

Читайте также:
  1. II. Задания по циклическим алгоритмам
  2. АЛГОРИТМ
  3. АЛГОРИТМ
  4. Алгоритм 1. Сила магического мышления
  5. Алгоритм 2. Магическое состояние
  6. Алгоритм 2. Состояние Мага

Даний алгоритм належить до множин алгоритмів послідовностей на основі обчислення класів відрахувань. Властивості таких послідовностей описані в [1]. У розглянутому тут окремому випадку цілі числа формуються за рекурентною формулою

In+1=(J In+1)mod M, n=1, 2, …, M-1..... (A.1)

Потім послідовність цілих чисел нормується для одержання значень в інтервалі від 0 до 1. Нижче розглядається початкове значення I0.

Очевидно, що період послідовності (А.1) не може бути більше М. Відповідно до [1] період дорівнює М, зокрема тоді, коли

J=4K+1 і M=2L, (А. 2)

де К и L – такі цілі числа, що М>J. Найбільше значення In у (А. 1) дорівнює М-1, тому для формування по (А. 1) чисел, тільки менших 231, необхідно, щоб

J(M-1)+1<231, чи (4K+231)/(4K+1)>2L, (A. 3)

 

Таким чином, (А. 3) установлює співвідношення між J і M у (А. 1). Відзначимо, що при малому початковому значенні I0 (А. 1) сегмент, що починається з нього, є послідовністю монотонно зростаючих чисел доти, поки J In+1 не стані більше М. Наприклад, у найпростішому випадку при J=1 і I0=0 послідовність має вид 0, 1, 2, …, М-1. Таким чином, послідовність стає випадково. при великих значеннях J.

Нехай мінімальний період послідовності дорівнює 106, тоді L=20 і з (А. 3) найбільше можливе значення K=511. Звідси для (А. 1) маємо

 

M=220=1048576, J=4(511)+1=2045 (A. 4)

 

Крім цього, виберемо (довільно) I0=12357, (A. 5)

тоді перші 70 цілих чисел

 

                 

 

Відзначимо, що всі цілі числа лежати в інтервалі від 0 до 1048576 і виявляється, що ця коротка послідовність, принаймні, не має небажаних властивостей. Оскільки в звичайній програмі побудова випадкових чисел числа формуються в інтервалі від 0 до 1, можна задати n-й відлік формулою

 

Rn=(In+1)/(M+1) (A. 6)

 

так, щоб усі випадкові числа знаходилися в цьому інтервалі.

На основі співвідношень (А. 1), (А. 4) – (А. 6) можна написати підпрограму формування I1, I2, …, In..... При практичній реалізації цієї програми виникає проблема забезпечення автоматичної ініціалізації. Схема ініціалізації обов'язково залежить від типу ЕОМ. Однак для більшості ЕОМ працездатною є версія 1:

FUNCTION RANDOM (X)

IF (INIT.EQ.12357) GO TO 1

INIT= 12357

I=INIT

1 I=2045*I+1

I=I-(I/1048576)*1048576

RANDOM=FLOAT(I+1)/1048577.0

RETURN

END

 

Відзначимо, що під час завантаження даної програми внутрішня змінна INIT не винна дорівнювати 12357, а в інтервалах між викликами програми як INIT, так і I не повинні змінюватися. Початкова установа I=INIT забезпечує, як було описано вище, початок випадкової послідовності. У даному варіанті алгоритму Х – фіктивна змінна.

Якщо не потрібна автоматична ініціалізація чи вона винна бути змінною, те становить інтерес версія 2:

 

FUNCTION RANDOM (I)

I=2045*I+1

I=I-(I/1048576)*1048576

RANDOM=FLOAT(I+1)/1048577.0

RETURN

END

 

У цій версії І змінюється тільки при ініціалізації, коли встановлюється її початкове значення. Наприклад, для установи початкового значення I=12357 і формування перших двох випадкових чисел R1 і R2 можна використовувати припущення

K=12357

R1=RANDOM (K).

R2=RANDOM (K).

При звертанні до підпрограми RANDOM у версії 2 аргумент (К), природньо, не повинний змінюватися при її виконанні. Переваги іншого варіанта в порівнянні з першим полягають у тому, що:

1) немає необхідності приймати припущення про ті, що проміжні перемінні між звертаннями до підпрограми залишаються незмінними;

2) ініціалізацію програм можна здійснювати в основній програмі довільним числом в інтервалі від 0 до 1048575.

 

До недоліків відноситься те, що користувачу необхідно пам'ятати про правильну ініціалізацію I (чи еквівалента I в основній програмі) в інтервалі від 0 до 1048575 і про те, що між послідовними викликами програм I не повинно змінюватися.

У прикладі програми, що приводитися нижче, версії 2 розраховані перші 70 випадкових чисел відповідно з визначеними вище даними. Оскільки в даному прикладі початкове значення I=12357, у результаті отримані ті ж числа, що й у приведеному вище прикладі версії 1:

 

PROGRAM VERS2(INPUT, OUTPUT)

C – PRINT 70 RANDOM NUMBERS.

DIMENSION R(70)

K=12357

DO 1 J=1, 70

1 R (J) =RANDOM (K)

PRINT 2, R

2 FORMAT(7F8.6)

STOP

END

C

·FUNCTION RANDOM (I)

I=2045*I+1

I=I-(I/1048576) *1048576

·RANDOM=FLOAT(I+1)/1048577.0

RETURN

END

/LGO

 

.099414 .199705 .122502 .857597 .136420 .852693 .591484 .090877 .069850 .152838   .299419 .395030 .515310 .784634 .977466 .756376 .584924 .842606 .841235 .551257   .310731 .834445 .807589 .575788 .909412 .789466 .169059 .128435 .325905 .318828   .442812 .440026 .518642 .485529 .748327 .457776 .723296 .647902 .475414 .127320 .548520 .851800 .621811 .906695 .327288 .150114 .140660 .958640 .216346 .368044   .725532 .930929 .603319 .192025 .303295 .981302 .648336 .419003 .425186 .647826 .712078 .750182 .758750 .689554 .236604 .763126 .846010 .860181 .503743 .802619

Відзначимо ще раз, що в іншому варіанті незалежно від початкового значення I період випадкової послідовності дорівнює 1048576.

Щодо інших датчиків випадкових величин, те стандартним методом моделювання непрерервної випадкової величини x з функцією розподілу F(x), коли існує зворотна до неї F-1(x), є використання алгоритму виду

 

x=F-1(a). (1.2.1)

 

Цей алгоритм можна використовувати в тих випадках, коли існує аналітичне вираз для F-1(x) або в математичному забезпеченні є стандартна процедура, що обчислює цю функцію.

Для дискретної випадкової величини x із законом розподілу pk=P{x=xk}, k=0,1, 2,…,універсальний алгоритм реалізує <<метод віднімання>> (рис. 1.8). Реалізація цього алгоритму припускає наявність у пам'яті ЕОМ усього набору чисел pk, k=0,1, 2,…

 

 
 

 


Рис.1.8. Алгоритм віднімання

 

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

 

Завдання для виконання

1.Нормальний розподіл

 

p(x)=(2p)1/2exp(-x 2/2), xÎ(-¥, ¥). (1.2.2)

Алгоритм А1.

0. Зарезервовано константу с =2p.

1. R=

2. j=ca2.

3. U1=R cosj, U2=R sinj.


Дата добавления: 2015-08-13; просмотров: 138 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Порядок формирования и распределения прибыли| Алгоритм А2

mybiblioteka.su - 2015-2024 год. (0.011 сек.)