Previous Page  18 / 25 Next Page
Information
Show Menu
Previous Page 18 / 25 Next Page
Page Background

Генератор равномерных случайных величин по технологии полного вихревого массива

ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. Приборостроение. 2017. № 2

103

В качестве примера рассмотрим часто используемые в практических разра-

ботках случайные величины длиной 16 бит. Это двухбайтные числа из диапазо-

на

0, 65535 .

Число случайных величин в одной полной последовательности

составляет

(

)

16

16 2 2 65536.

w

N w

= = = =

Общее число неповторяющихся число-

вых последовательностей определяется как

(

)

4

3 3 4 3 2 3

16 2

2 2

w

s

N w w

⋅ −

= = ⋅

= ⋅

=

316 1 49

2

2 .

⋅ +

= =

Тогда количество всех генерируемых чисел определяется как

(

)

4 49 51

16

2 2 2 .

ns

ns

N w N N

= = ⋅

= ⋅

=

В этом случае битовая длина будет

(

)

4 51 55

.

16

2 2 2

bs

ns

N w w N

= = ⋅

= ⋅

=

Этот результат можно сравнить с оценкой для генераторов семейства

MT19937 [13]. Просматривая программный код этого генератора, обнаружива-

ем, что битовая длина генерируемых случайных величин составляет

32

32.

w

=

Длина массива начальной конгруэнтной генерации задана как

32

624

MT

=

эле-

мента. Глобальный вихрь не использует кольцевой перенос старшего бита по-

следовательности. Эти данные говорят о том, что полное число генерируемых

случайных величин составляет

= ⋅

− = ⋅

− =

− =

32

32

32

31 32 624 31 19968 31 19937.

ns

MT w MT

Вычитание константы 31 связано с тем, что вихрь не учитывает кольцо

избыточных бит. Гипотетически в этих

19 937

переменных можно получить не-

повторяющуюся битовую последовательность в

19937

2

бит. Однако это только

гипотетически, поскольку конгруэнтный генератор вихря 0 с последующими

однобитными вихрями позволяют получать только

=

19 937

ns

MT

чисел. Чтобы

получить больше чисел, необходимо вручную задавать новое исходное число

x

0

,

поскольку конгруэнтные константы

a

и

c

заданы стационарно и не подлежат

автоматическому изменению.

Продолжим обсуждение настройки рассмотренного вихревого генератора.

Необходимо явно убедиться, что все создаваемые случайные величины в гене-

раторе

nsDeonYuliTwist28DA

повторяются одинаковое число раз. Поскольку

условие равномерности предполагает, что все величины в полной генерации

присутствуют одинаковое число раз, то в простейшем варианте в одной такой

последовательности все числа встречаются лишь один раз. Следовательно, во

множестве перестановок любое число встречается столько раз, сколько самих

перестановок, так как в каждой равномерной перестановке любое число встре-

чается только один раз. Это является прекрасным средством для подтвержде-

ния равномерности генераторов.

Далее приведен код, в котором каждые элементы массива

xC

являются со-

ответствующими счетчиками случайных величин, т. е. индекс счетчика равен

случайной величине. В программе проверяется равномерность вихря 0, кото-

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

длина каждой случайной величины принимается

16

w

=

бит. Тогда длина пол-

ной последовательности составит

= = =

16

2 2 65536

w

N

случайных величин.