Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методы_программирования.doc
Скачиваний:
22
Добавлен:
12.02.2015
Размер:
181.76 Кб
Скачать
    1. Генерация случайных чисел

Метод фон-Неймана.

577215649^2 = 33317[792380594]909201

Линейный конгруэнтный метод

Формула линейного конгруэнтного метода: X_n+1 = (a*x_n+c) mod m

X_0 = seed

Все величины не должны превышать m.

m = 10, x_0 = a = c = 7

7,6,9,0,7,6,9,0...

Если c = 0, то называют мультипликативный конгруэнтный метод, иначе — смешанным.

Ситуация с a = 1 считается плохой. Желательно m брать больше.

Выбор множителя с т.з. периода максимальной длины. Если Aи C = 1, период максимален, но случайности нет.

Теорема.

Линейная конгруэнтная последовательность, определённая числами m,a,x0 имеет период длины m тогда и только тогда, когда числа c и m взаимно простые (нет общих множителей, кроме 1), b = a-1 кратно p для каждого простого p, являющегося делителем m. B кратно 4, если m кратно 4.

m=153, a=52,c=19

a = z^k + 1

z <= k < e

x_n+1 = ((z^k+1)x_n+1) mod z^e

z — основание системы счисления

Потенциал линейной конгруэнтной последовательности с максимальным периодом это наименьшее целое s, такое, что b^s \eq 0 mod m.

Пример:

m = 2^35

b^2 = 2^(2*18) = 2^36

Если потенциал <4, последовательность неудачная.

      1. Другие методы генерации последовательностей

Квадратичный конгруэнтный метод

X_n+1 = (dx_n^2 + a*x_n + c) mod m

Метод Ковэю

X0 mod 4 = 2

X_n+1 = x_n*(1+x_n) mod 2^e

Фибоначчи

x_n+1 = (xn + x_n-1) mod m

Длина периода m^2

x_n+1 = (x_n + x_n-k) mod m

k рекомендуется брать большим.

Метод Митчела и Мура

x_n = (x_n-2 + x_n-55) mod m , n >= 55

m — чётное, x0,x1,... - все целые.

Период 2^55 — 1

Обратная конгруэнтная последовательность

x_n+1 = (a*x_n^-1 + c) mod m

      1. Статистические критерии

Число Пи = 3,14159265358979323846264338327950

Теоретические критерии

Критерий хи-квадрат

Рассмотрим ситуацию. Две игральных кости.

S = 2 3 4 5 6 7 8 9 10 11 12

Ps = 1/36 1/18 1/12 1/9 5/36 1/6 5/36 1/9 1/12 1/18 1/36

n=144

S = 2 3 4 5 6 7 8 9 10 11 12

Ys = 2 4 10 12 22 29 21 15 14 9 6

n*Ps= 4 8 12 16 20 24 20 16 12 8 4

V = (Y2 — nP2)^2 + (Y3-nP3)^2 + … + (Y12-nP12)^2

V = sum_s=1^(k=11): (Ys — nPs)^2 / n*Ps

Y1 + Y2 + … + Yk = n

P1 + P2 + … = 1

V = 1/n * sum_s=1^k: (Ys^2/Ps)-n

P=1%

P=5%

P=25%

P=50%

P=75%

P=95%

P=99%

\nu = 1

0.00016

6,6

\nu = 2

0,6

0,2

\nu = 5

2,6

15,1

\nu = 10

7,6

6,7

18,3

23,2

...

\nu = 20

\nu = 50

29,7

76,2

В нашем случае число степеней свободы \nu = 10 (число вариантов -1)

Значение на пересечении (\nu = 10) = 18,3 для столбца, показывающую величину 95%, означает, что значения критерия хи-квадрат не будет превышать 18,3 в 95% случаев.

Можно провести 3 эксперимента. Если из 3 экспериментов два оказались подозрительными, то последовательность не является случайной. Подозрительные - \nu < 1%, либо \nu > 99%

Критерий Колмогорова-Смирнова

F(x) = P(X <= x)

N независимых наблюдений X1,X2,...,Xn. Упорядочиваем по возрастанию.

Kn+ = \sqrt(n) * max_(1<=j<=n) (j/n — F(x))

Kn- = \sqrt(n) * max_(1<=j<=n) (F(x_j) — (j-1)/n)