Еще один способ комбинирования двух генераторов G1, G2 заключается в том, что G1 изменяет параметры генератора G2 с течением времени. Проиллюстрируем это в случае, когда G2 – линейный конгруэнтный генератор:
xt atxt1 bt mod N,
t1, 2, ...
(10)
где x0 A– некоторое стартовое значение, а
a
t
At b B,
t 1, 2, ...
– некоторая
t
псевдослучайная последовательность векторов, равномерно распределенных в B.
Доказано, что если |B| = 3, то наибольшее приближение распределения {xt} к равномерному достигается, если множество параметров Bимеет следующий вид:
3
B 0,
3
,
1
3
2 .
Проверка качества сгенерированной последовательности
Для проверки гипотезы о том, что
сгенерированная последовательность подчиняется равномерному
распределению,
можно использовать
критерий согласия χ2-Пирсона.
Сначала отрезок, содержащий числа, которые могут быть смоделированы, разбивают
на
Kинтервалов
(интервалы
обычно
выбирают
равной
длины)
и
считают,
сколько
элементов последовательности, длина которой N, попадает в каждый интервал (i). Пусть M – максимально возможный элемент в последовательности длиной
N, тогда если
M < 10,
то
K =
M, иначе
K≈ 5∙lg
N.
Затем
вычисляют
статистику
критерия
по
формуле:
2 S*
N
i1
i PiN ,Pi
где Pi– теоретическая вероятность попадания в i-й интервал (для равномерного распределения Pi= 1 / K, если интервалы равной длины).
Если вычисленная статистика S* больше критического значения статистики Sкрпри заданных степени свободы (r = K – 1) и уровне значимости (α = 0.05), то гипотеза отвергается, иначе нет оснований для отклонения проверяемой гипотезы.
Sкрможно взять из статистической таблицы (например, по адресу http://ami.nstu.ru/headrd/applied/xi_point.htm) или вычислить самостоятельно, используя какой-нибудь математический пакет. Например, в Maple 12 это можно сделать следующим образом:
with(Statistics):
alpha:=0.05; # Уровень значимости r:=9; # Степень свободы
S[kr]:=Quantile(ChiSquare(r),1-alpha); # Критическое значение статистики