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

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

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

89

допустимых значений параметров

a

,

c

,

x

. Другими словами, мы имеем не полную

возможность равномерных последовательностей, а лишь

СС

= 56/392 =

= 0,1429 = 14,29 % полного конгруэнтного списка. Показатель невелик.

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

следующая технология: операцию модуля

mod

в (1) можно заменить на операцию &

битовой конъюнкции. Такой вариант действий допускается, если генерируемое

двоичное число

x

длиной

w

бит принадлежит интервалу

0, 2 1 .

w

x

∈ −

Технология вихревых генераторов использует в качестве основы битовый

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

подхода использовался в классических работах японских исследователей

Матсумото и Нишимура [13, 14, 19] на основе ранних исследований Леви [20].

Они разработали несколько генераторов, включая хорошо известный генератор

MT19937 (или MT19937-64 для выполнения с 64-битными словами), которые,

по оценкам авторов, имеют большую величину повторяемости

19937

2 1

, что до-

вольно значительно в некоторых специальных случаях.

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

в следующем. Если взять два числа

i

x

и

1

i

x

+

одинаковой битовой длины

w

, то

новые значения создаются согласно правилу: значения бит, взятые из числа

1

,

i

x

+

успешно сдвигаются влево в число ;

i

x

в то же время высвобождающиеся

биты слева из числа

i

x

циклично присоединяются один за другим к правой ча-

сти числа

1

.

i

x

+

В качестве примера покажем вихревой сдвиг в двоичной форме при

3

w

=

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

0 10

2

5

,

101

x

= =

1 10

2

3

,

011

x

= =

2 10

2

6

.

110

x

= =

Структуру такого подхода можно представить так же, как на диаграмме (рис. 1),

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

ностью конгруэнтной генерации. Вихрь 1 является результатом глобального

сдвига влево на 1 бит. В свою очередь старший бит исходной последовательности

совершает кольцевое движение в последнюю позицию справа в следующей по-

следовательности. Таким образом, исходная последовательность 101 011 110

2

=

= 5 3 6

10

превращается в вихревую 010 111 101

2

= 2 7 5

10

. Этот алгоритм называется

вихревой технологией, или кольцевым вихрем, или глобальным кольцевым вих-

Рис. 1.

Диаграмма кольцевого вихря