А.Ф. Деон, Ю.А. Меняев
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()
. При полной генерации кон-