Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры по моделированию систем.doc
Скачиваний:
77
Добавлен:
02.05.2014
Размер:
4.14 Mб
Скачать

23. Метод получения псевдослучайных чисел с равномерным законом распределения. Методы середины квадрата и середины произведения. [1/1]

1) Метод середины квадратов

Пусть имеется 2n разрядное число < 1, т.е. xi=0, a1 a2 … a2n

Возведем его в квадрат: xi2=0, b1 b2 … b4n

Возьмём 2n средних цифр:

xi+1=0, bn+1 bn+2 … b3n

Общая формула: xi+1=Д[10-2n Ц[103n xi2]],

где Д[.], Ц[.] – дробная и целая части числа

x0 – должно быть задано.

Пример.

x0 =0,2152; (x0)2 =0,04631104

x1 =0,6311; (x1)2 =0,39828721

x2 =0,8287 и т.д.

Недостатки:

1) наличие корреляции между числами;

2) в некоторых случаях случайность может вообще отсутствовать;

3) вырождение последовательности.

Пример 2:

xi =0,4500; (x0)2 =0,20250000; x1 =0,2500; (x1)2 =0,06250000; x2 =0,2500;

(x2)2 =0,06250000; x3 =0,2500.

2) Метод середины произведения

Является модификацией метода середины квадратов.

xi -1, xi – перемножаются.

Пусть xi -1=0, a1 a2 … a2n

xi=0, b1 b2 … b2n

xi -1*xi =0, c1 c2 … c4n

xi+1=0, cn+1 cn+2 … c3n

Общая формула: xi+1=Д[10-2n Ц[103n xi -1*xi]]

x0 и x1 – заданы.

Метод также имеет тенденцию к вырождению, но качество псевдослучайных чисел лучше, чем у чисел, полученных по 1-му методу.

41

24. Конгруэнтные процедуры генерации псч. Мультипликативный и смешанный методы. [1/1]

Конгруэнтные процедуры представляют собой арифметические операции, основаны на фундаментальном понятии конгруэнтности.

Два целых числа α и β конгруэнтны (сравнимы) по модулю m, где m – целое число, тогда и только тогда, когда существует такое целое число k, что

α-β=km, т.е. разность (α-β) делится на m и, если числа α и β имеют одинаковые остатки от деления на абсолютную величину m.

Пример: 1984≡4(mod10) ; 1984-4=198*10, ост(1984/10)=ост(4/10)

Конгруэнтные процедуры являются чисто детерминированными.

Формула xi+1=Ф(xi), i=0,1,2,… имеет вид Xi+1=λXi+μ(mod M),

Xi, λ, μ, M – неотрицательные целые числа.

X1=λX0+μ(mod M)

X2=λX1+μ(mod M)=λ2X0+(λ+1)μ(mod M)

X3=λX2+μ(mod M)= λ3X0+( λ2+λ+1)μ(mod M)= λ3X0+( λ3-1)μ/(λ-1)(mod M) ……

Xi= λiX0+( λi-1)μ/(λ-1)(mod M) (1)

Если заданы начальное значение X0, λ, μ, то выражение (1) однозначно определяет последовательность целых чисел {Xi} составлено из остатков от деления на

M членов последовательности {λiX0+( λi-1)μ/(λ-1)(mod M)}. Таким образом, для любого i≥1 выполняется условие Xi<M. {Xi}={Xi/M}, Xi принадлежит (0,1) – последовательность рациональных чисел. Конгруэнтные процедуры могут быть реализованы:

1) Смешанный метод.

Задаёт последовательность неотрицательных целых чисел {Xi} не превосходящих M по формуле Xi+1=λXi+μ(mod M) μ≠0.

Возможность выбора дополнительного параметра позволяет уменьшить корреляцию получаемых чисел.

В библиотеке стандартных программ для вычисления последовательности псевдослучайных чисел основаны на конгруэнтных процедурах.

2) Мультипликативный метод.

Для машинной реализации удобно версия, когда M=pg, где p – число цифр в системе счисления, принятой в ЭВМ; g – число бит в машинном слове.

Вычисления остатка от деления на M сводится к выделению g младших разрядов делимого, а преобразования целого числа Xi в рациональную дробь xi осуществляется подстановкой слева от Xi двоичной или десятичной запятой.

Алгоритм построения последовательности для двоичной последовательности M=2g:

1) выбрать в качестве X0 произвольное нечетное число;

2) вычислить коэффициент λ=8t ± 3, где t – любое целое положительное число;

3) найти произведение λX0, содержащее не более 2g значащих разрядов;

4) взять g младших разрядов в качестве первого члена последовательности X1, а остальные отбросить;

5) определить дробь x1= X1/2gиз интервала (0,1);

6) Присвоить X0=X1;

7) вернуться к пункту 3.

Пример. Получить числа последовательности для g=4.

1) X010=7; X0=0111

2) t=1, λ=8t ± 3, λ=11 или λ=5; пусть λ10=5, λ=0101

3) а) λX0=(0101)(0111)=00100011; X1=0011; x1=3/16=0,1875

б) λX1=(0101)(0011)=00001111; X2=1111; x2=15/16=0,9375

в) λX2=(0101)(1111)=01001011; X3=1011; x3=11/16=0,6875

г) λX3=(0101)(1011)=00110111; X4=0111; x4=7/16=0,4375 42