А.Ф. Деон, Ю.А. Меняев
104
ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. Приборостроение. 2017. № 2
Имена
P020501
и
cP020501
выбраны произвольно.
using nsDeonYuliTwist28DA; // класс вихревого генератора
namespace P020501
{ class P020501
{ static void Main(string[] args)
{ cDeonYuliTwist28DA CT = new cDeonYuliTwist28DA();
CT.Start(); // запуск генератора
Console.WriteLine("w = {0} N = {1}", CT.w, CT.N);
int[] cX = new int[CT.N]; // массив счетчиков
for (int i = 0; i < CT.N; i++) cX[i] = 0;
for (int n = 0; n < CT.N; n++)
{ int z = CT.Next();
cX[z]++; // счетчик случайной величины
}
int count0 = 0; // количество пропущенных величин
int count1 = 0; // количество однократных величин
int count2 = 0; // количество двукратных величин
for (int i = 0; i < CT.N; i++)
{ if (cX[i] == 1) count1++; // однократные
else if (cX[i] == 2) count2++; // двукратные
else if (cX[i] == 0) count0++; // никогда
}
Console.Write("count0 = {0} ", count0);
Console.Write("count1 = {0} ", count1);
Console.WriteLine("count2 = {0} ", count2);
Console.ReadKey(); // просмотр результата
}
}
}
После выполнения программы следующие две строки появляются на мо-
ниторе:
w = 16 N = 65566
count0 = 0 count1 = 65536 count2 = 0
Чтобы убедиться в равномерности одного полного вихря при заданных по
умолчанию конгруэнтных константах
a
и
c
, необходимо сгенерировать
= ⋅ = ⋅
=
16 65536 1048576
nwN w N
случайных величин. Следующий код выпол-
няет такую работу. При этом каждая равномерно распределенная случайная ве-
личина должна появиться
16
w
=
раз. Имена
P020502
и
cP020502
выбраны про-
извольно.
using nsDeonYuliTwist28DA; // класс вихревого генератора
namespace P020502
{ class P020502
{ static void Main(string[] args)
{ cDeonYuliTwist28DA CT = new cDeonYuliTwist28DA();
CT.Start(); // старт генератора
int nwN = CT.w * CT.N;//число вихрей одной пары a и c
Console.WriteLine("w = {0} N = {1} nwN = {2}",
CT.w, CT.N, nwN);
int[] cX = new int[CT.N]; // массив счетчиков
for (int i = 0; i < CT.N; i++) cX[i] = 0;