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

А.Ф. Деон, Ю.А. Меняев

100

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

В классе

cDeonYuliTwist28DA

зарезервировано несколько переменных, ко-

торые можно настраивать с помощью инкапсулированных функций. В качестве

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

шения простейшей задачи генерации нескольких случайных величин, каждая

длиной

16

w

=

бит из диапазона

16

0, 2 1 0, 2 1 0, 65535

w

 

 

− =

− =

 

. Далее при-

веден код для решения этой задачи. Имена

P020401

и

cP020401

выбраны произ-

вольно.

using nsDeonYuliTwist28DA; // вихревой генератор

namespace P020401

{ class P020401

{ static void Main(string[] args)

{ cDeonYuliTwist28DA CT = new cDeonYuliTwist28DA();

CT.Start(); // старт генератора

for (int j = 0; j < 8; j++)

{ int z = CT.Next();

Console.Write("{0,7} ", z); // монитор

}

Console.ReadKey(); // просмотр результата

}

}

}

После выполнения программы на мониторе появляется следующий результат:

9362 36699 52924 2805 8774 14575 51504 13129.

При генерации очередной новой исходной последовательности (вихрь 0) в

классе

cDeonYuliTwist28DA

конгруэнтная константа

a

поочередно выбирается

из двух разных интервалов, как показано на рис. 2.

Рис. 2.

Схема реализации интервала конгруэнтной константы

a

Значение

a1e

находится слева от

/ 2,

N

значение

a2b a1e 4

= +

— справа от

/ 2.

N

Движение

a

в интервале

a1

производится справа налево от

a1e

к

a1b

с ша-

гом –4. Движение

a

в интервале

a2

выполняется слева направо от

a2b

к

a2e

с ша-

гом +4. Такой выбор конгруэнтной константы

a

предпринят искусственно, что-

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

выбрать любой другой алгоритм, если есть необходимость в строгом управле-

нии процесса генерации. Например, если использовать старт по датчику време-

ни

TimeStart()

, то начальное значение последовательности определяется компо-

нентой миллисекунд текущего времени.

Значение

a1b

задается параметром

b

, значение

a2e

— параметром

e

в ин-

терфейсе их установки с помощью функции

SetA()

. При полной генерации кон-