Научная статья на тему 'Вихревой генератор случайных величин Пуассона по технологии кумулятивных частот'

Вихревой генератор случайных величин Пуассона по технологии кумулятивных частот Текст научной статьи по специальности «Электротехника, электронная техника, информационные технологии»

CC BY
254
27
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ГЕНЕРАТОР ПСЕВДОСЛУЧАЙНЫХ ВЕЛИЧИН / СЛУЧАЙНЫЕ ПОСЛЕДОВАТЕЛЬНОСТИ / РАСПРЕДЕЛЕНИЕ ПУАССОНА / ВИХРЕВОЙ ГЕНЕРАТОР / PSEUDORANDOM NUMBER GENERATOR / STOCHASTIC SEQUENCES / POISSON DISTRIBUTION / TWISTER GENERATOR

Аннотация научной статьи по электротехнике, электронной технике, информационным технологиям, автор научной работы — Деон А.Ф., Дмитриев Д.Д., Меняев Ю.А.

Широко известные генераторы случайных величин Пуассона связаны с различными модификациями алгоритма на основе сходимости по вероятности последовательности равномерных случайных величин к пуассоновской случайной величине. Однако такой подход в некоторых ситуациях дает различные дискретные распределения вероятностей Пуассона и пропуски генерируемых величин. Предложен новый подход для создания случайных величин Пуассона на основе полного вихревого генератора равномерных случайных величин, используя технологию кумулятивных частот. Результаты моделирования подтверждают, что вероятностное и частотное распределение получаемых величин полностью совпадает с теоретическим распределением Пуассона. Кроме того, комбинирование нового подхода с алгоритмом настройки базовой вихревой генерации позволяет существенно увеличить длину создаваемых последовательностей без использования дополнительной оперативной памяти компьютера

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Twister Generator of Poisson Random Numbers with the Use of Cumulative Frequency Technology

The widely known generators of Poisson random variables are associated with different modifications of the algorithm based on the convergence in probability of a sequence of uniform random variables to the created stochastic number. However, in some situations, this approach yields different discrete Poisson probability distributions and skipping in the generated numbers. This paper offers a new approach for creating Poisson random variables based on the complete twister generator of uniform random variables, using cumulative frequency technology. The simulation results confirm that probabilistic and frequency distributions of the obtained stochastic numbers completely coincide with the theoretical Poisson distribution. Moreover, combining this new approach with the tuning algorithm of basic twister generation allows for a significant increase in length of the created sequences without using additional RAM of the computer

Текст научной работы на тему «Вихревой генератор случайных величин Пуассона по технологии кумулятивных частот»

УДК 681.3.06

DOI: 10.18698/0236-3933-2020-1-101-123

ВИХРЕВОИ ГЕНЕРАТОР СЛУЧАЙНЫХ ВЕЛИЧИН ПУАССОНА ПО ТЕХНОЛОГИИ КУМУЛЯТИВНЫХ ЧАСТОТ

А.Ф. Деон1 Д.Д. Дмитриев1 Ю.А. Меняев2

deonalex@mail.ru ddd. 1955@gmail.com yamenyaev@uams.edu

1МГТУ им. Н.Э. Баумана, Москва, Российская Федерация 2 Институт исследования рака им. Уинтропа Рокфеллера, Литл-Рок, Арканзас, США

Аннотация

Широко известные генераторы случайных величин Пуассона связаны с различными модификациями алгоритма на основе сходимости по вероятности последовательности равномерных случайных величин к пуассоновской случайной величине. Однако такой подход в некоторых ситуациях дает различные дискретные распределения вероятностей Пуассона и пропуски генерируемых величин. Предложен новый подход для создания случайных величин Пуассона на основе полного вихревого генератора равномерных случайных величин, используя технологию кумулятивных частот. Результаты моделирования подтверждают, что вероятностное и частотное распределение получаемых величин полностью совпадает с теоретическим распределением Пуассона. Кроме того, комбинирование нового подхода с алгоритмом настройки базовой вихревой генерации позволяет существенно увеличить длину создаваемых последовательностей без использования дополнительной оперативной памяти компьютера

Ключевые слова

Генератор псевдослучайных величин, случайные последовательности, распределение Пуассона, вихревой генератор

Поступила 15.11.2019 Принята 25.11.2019 © Автор(ы), 2020

Введение. Направление генераторов пуассоновских случайных величин реализует процесс создания целых случайных величин г| е Н, имеющих следующее распределение вероятностей по вещественному параметру а [1,2]:

Р(г},а) = — е~а, где г| принимает любые целые значения 0,1,2,...,оо.

(1)

Распределение Пуассона обладает замечательными свойствами начальных вероятностных моментов по математическому ожиданию m(ri,a) = Ei(r|,a) = a и дисперсии D(ri,a) = £2('n'a) = ^i(Tl2'a) = a-

Эти и другие свойства позволяют использовать распределение Пуассона в теоретической и статистической математике [3, 4], в исследовании физических явлений [5, 6], в радиотехнике и ядерной физике [7, 8], в информатике и информационных системах [9], в моделировании сетей передачи данных [10,11], в экономике и финансовом анализе [12], а также в других областях вплоть до биологических исследований [13-15] и разработок для медицинской физики и техники [16-18].

Существуют различные варианты реализации генераторов псевдослучайных величин на основе распределения Пуассона. Широко известен генератор, предложенный Д. Кнутом [19,20] и активно используемый его последователями. Генератор представлен на произвольном языке псевдокода, где параметр а имеет обозначение Я-, а случайная величина г| равна к:

algorithm Poisson random number (Knuth): init:

LetL<re-A, k<r0andp<r 1. do:

k<rk + 1.

Generate uniform random number и in [0,1 ] and letp<rpxu. whilep > L. return к -1.

Далее представлен программный код на языке С# для Microsoft Visual Studio. Согласно (1), вместо величины X используется параметр а, которому можно присвоить произвольное значение, например а = 2,0. Функция KnuthPoisson() создает целые числа к, являющиеся аналогом случайных величин т| в (1). Их частотное распределение запоминается в массиве пик. В качестве генератора равномерных случайных величин применяется функция Random.Next(). Функция PoissonPQ размещает в массиве pEta вероятности событий Р(г|,а). Для формирования распределения используются

N -2W -216 - 65536 равномерных случайных величин. Программные имена Р060102 и сР060102 выбраны произвольным образом.

Программный код на языке С# для Microsoft Visual Studio

namespace P060102 { class CP060102

{ static uint gc = 0; // число равномерных генераций

static void Main(string[] args)

{ int w = 16; // битовая длина равномерных целых величин long N = 1L « w; // количество случайных величин

Console.WriteLine("w = {0} N = {1}", w, N); double Alpha = 2.0;

Console.WriteLine("Alpha = {0:F2}", Alpha);

Random G = new Random(); // равномерный генератор

int wX = 200;

int[] nuK = new int[wX]; // частоты no Кнуту

for (int i = 0; i < wX; i++) nuK[i] = 0; int maxK =0; // длина распределения

for (int i = 0; i < N; i++) { int k = KnuthPoisson(Alpha, N, G); nuK[k]++;

if (k > maxK) maxK = k; }

Console.WriteLine("maxK = {0}", maxK);

doublet] pEta = new double[wX]; // вероятности

long[] nuEta = new long[wX]; // частоты Пуассона

int cEta = PoissonP(Alpha, N, pEta, nuEta); VerifyProbability(N, cEta, pEta, nuEta); Console.WriteLine("cEta = {0} ", cEta);

// частота по Кнуту // длина распределения

// сумма частот Пуассона // сумма вероятностей Пуассона // сумма частот по Кнуту // сумма вероятностей по Кнуту // сумма частот по Пуассону // сумма вероятностей по Пуассону рК nuK");

pEta nuEta");

nuK - nuEta"); int nEta = cEta > maxK ? cEta : maxK;

for (int i = 0; i <= nEta; i++) // табулирование частот { double pK = (double)nuK[i] / (double)N; int dnu = (int)(nuK[i] - nuEta[i]); Console.Write("{0,2} {2,12:F10} {1,10}",

i, nuK[i], pK); Console.Write(" {0,12:F10} {1,10}", pEta[i], nuEta[i]);

long snuEta = 0; double spEta = 0.0; int snuK = 0; double spK = 0.0; snuEta = 0; spEta = 0.0; Console.Write("Eta Console.Write(" Console.WriteLine ( "

Console.WriteLineI snuK += nuK[i]; spK += pK; snuEta += nuEta[i] spEta += pEta[i];

' {0,8}", dnu);

// сумма частот по Кнуту // сумма вероятностей по Кнуту : // сумма частот по Пуассону

// сумма вероятностей по Пуассону

}

spK

spEta

Console.Write("sum Console.WriteLine (" Console.Write (" {0,12:F10} {1,10}",

spK, snuK); Console.WriteLine(" {0,12:F10} {1,10}"

spEta, snuEta); Console.WriteLine("gc = {0}", gc);

snuK"); snuEta");

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

}

//--------------------------------------------------------------

static int KnuthPoisson(double Lam, long N, Random G) { double L = Math.Exp(-Lam); double p = 1.0; double dN = (double)N; int к = 0; do { k++;

long z = (long)G.Next(); // равномерная величина

z = z & (N - 1) ;

double u = (double)z / dN;

p = p * u;

gc++; // всеобщее число равномерных генераций

} while (р > L); return к - 1;

static int PoissonP(double alpha, long N,

doublet] pEta, long[] nuEta)

{

double emAlpha = Math.Exp(-alpha);

double spEta =0.0; // сумма вероятностей

long snuEta = 0L; // сумма частот

pEta[0] = 1.0 * emAlpha;// вероятность p(0) Пуассона spEta += pEta[0]; // сумма вероятностей

nuEta[0] = (long)Math.Round(pEta[0] * (double)N); snuEta += nuEta[0]; // сумма частот

double r = alpha; // первое слагаемое Тейлора

pEta[l] = г * emAlpha; // вероятность p(l) Пуассона spEta += pEta[l]; // сумма вероятностей

nuEta[1] = (long)Math.Round(pEta[l] * (double)N); snuEta += nuEta[1]; // сумма частот

int Eta = 2; // случайная величина

do

{

r *= alpha / (double)Eta; // слагаемое для exp double p = r * emAlpha; // вероятность p(Eta) long nu = (long)Math.Round(p * (double)N); long sd = snuEta + nu;

if (nu == 0L || sd > N) break; // хвост

pEta[Eta] = p; // вероятность p(Eta)

spEta += p; // суммарная вероятность

nuEta[Eta] = nu; // частота nu(Eta)

snuEta += nu; // сумма частот

Eta++; // следующая случайная величина Eta

} while (snuEta < N);

long d = N - snuEta; // недостающие частоты

if (d == 0L) return Eta - 1;

double dlN = (1.0 - spEta) / (double)d;

do

{

pEta[Eta] = dlN;//вероятность хвостового события nuEta[Eta] = 1; // одночастотное событие

snuEta++; // сумма частот

Eta++; } while (snuEta < N); return Eta - 1;

}

//--------------------------------------------------------------

static void VerifyProbability(long N, int cEta,

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

doublet] pEta, long[] nuEta)

{ double dN = (double)N;

for (int i = 0; i <= cEta; i++) pEta[i] = (double)nuEta[i] / dN;

}

//..............................................................

}

}

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

w = 16 N = 65536 Alpha =2.00 maxK =12

cEta = 10

Eta pK nuK pEta nuEta nuK -

0 0. .1352539063 8864 0. .1353302002 8869 -5

1 0. .2691345215 17638 0. .2706756592 17739 -101

2 0. .2699890137 17694 0. .2706756592 17739 -45

3 0. .1814422607 11891 0. .1804504395 11826 65

4 0. .0910491943 5967 0. .0902252197 5913 54

5 0. .0361175537 2367 0. .0360870361 2365 2

6 0. .0125427246 822 0. .0120239258 788 34

7 0. .0032806396 215 0. .0034332275 225 -10

8 0. .0008850098 58 0. .0008544922 56 2

9 0. .0002441406 16 0. .0001983643 13 3

10 0. .0000457764 3 0. .0000457764 3 0

11 0. .0000000000 0 0. .0000000000 0 0

12 0. .0000152588 1 0. .0000000000 0 1

sum spK snuk spEta snuEta

1, .0000000000 65536 1, .0000000000 65536

gc = 197025

В этом листинге столбцы рк и пик показывают вероятностные и частотные значения, полученные по алгоритму Кнута. Эти величины хорошо соответствуют аналогичным столбцам pEta и nuEta, которые рассчитываются по модели Пуассона (1). Однако есть некоторые особенности, которые следует рассмотреть.

Первый недостаток связан с тем, что строка 11 показывает 0 по алгоритму Кнута. Это означает, что генератор не создал случайную величину 11, хотя при этом он создал одну случайную величину 12. В теоретическом распределении Пуассона это не допускается. Для некоторых прикладных задач, которые не ограничены строгими условиями, этим можно было бы пренебречь. Однако если генератор используется для всестороннего моделирования реальных ситуаций, то лучше этого не допускать.

Второй недостаток проявляется тогда, когда генератор Кнута запускается многократно. Контроль значений в столбцах рК и пиК фиксирует их непостоянство. В теории вероятностей по аксиоматике Колмогорова категорически не допускается изменение вероятностной меры в заданном пространстве ни при каких обстоятельствах. Нарушение аксиом пространства может затруднить интерпретацию проводимых испытаний, когда требуются повторные опыты, например, как в случае аварийных ситуаций, т. е. когда необходимо повторять особые наблюдения.

Третий недостаток алгоритма Кнута связан с тем, что счетчик дс, который подсчитывает число генерируемых равномерных случайных величин, оказался равным 197025. Цикл генератора Кнута произвольный, следовательно, значение дс также может быть произвольным. В рассматриваемом случае значение дс = 197025, что почти в 3 раза превосходит число N = 65 536 генерируемых равномерных случайных величин, из которых алгоритм Кнута создает случайные величины Пуассона. Это влечет неконтролируемые повторения базовых случайных величин с нарушением их равномерности и, как следствие, приводит к недостаточно высокому качеству получаемых результатов.

Необходимо ликвидировать эти недостатки. Цель работы — создание генератора случайных величин в строгом соответствии с теорией распределения Пуассона без избыточной и промежуточной генерации равномерных величин.

Теория. Процесс Пуассона оперирует со случайными величинами, которые линейно зависят от непрерывного параметра. Обычно таким параметром является время наблюдения случайного события, но возможны и другие интерпретации. Интерес представляет как сам момент времени так и следующий за ним интервал времени т. Случайность событий в двух последовательных непрерывных интервалах времени [0, £] и (t,t + т] предполагает [21], что за общее время [0,£ + т] могут произойти случайные события числом г|. Если события числом к наблюдаются в интервале [0, то г|-к событий должны произойти в полуоткрытом интервале

(*, £ + т]. Первое аксиоматическое ограничение связано с тем, что оба интервала независимы и что события в них по раздельности происходят также независимо. Следствием этого ограничения является то, что вероятность наблюдения событий г| на общем интервале [0, £ + т] является совместной вероятностью независимых испытаний:

Рл (0,* + т]) = адо,*]т + т]). (2)

В модели Пуассона вероятность ((£,£ + т]) также имеет серьезные ограничения, которые можно сформулировать следующим образом.

1. Вероятность событий в интервале времени + т] не зависит от его начала ¿:

Р^к((и + х]) = Р((0,х]). (3)

2. Вероятность одного события в интервале времени (0,т] линейно зависит от длины интервала т с заданной интенсивностью X, причем вероятность о(т) наблюдения других событий ничтожно мала:

Д((0,т]) = Д(т) + а + о(т). (4)

В выражении (4) используется общепринятое в теории вероятностей [2] и теории случайных процессов обозначение а = А/с (1). Условие (4) исключает наблюдение в интервале времени т одновременно двух и более событий. Это позволяет упростить его, не рассматривая события с бесконечно малой вероятностью более высокого порядка о(т):

Д(т) = Х т. (5)

Выражение (5) позволяет однозначно определить вероятность отсутствия события в промежутке времени т:

Ро (т) = 1-Л (т) = 1-Ах (6)

Применяя совместно (2) и (6), получаем вероятность отсутствия событий в момент времени t в общем интервале [0, £ + т]:

Л) (* ■+т)=рь (0 ¡ь (т)=Ро (0(1-4- (7)

Выражение (7) ведет к определению производной по вероятности:

¿т=итм>+*)-мо=_щ(0. (8)

сЬ т->0 т

Решение дифференциального уравнения (8) определяет вероятность отсутствия событий в момент времени в котором константа с -1 вычисляется из начального условия Ро (0) = 1- В результате получаем

Р0^) = се~и =е~и. (9)

Выражение (9) с учетом (2) и ограничений (5) и (6) позволяет вычислить вероятность одиночного события Л([0,£ + т]) следующим образом:

= + (10)

По аналогии с преобразованиями (7) и (8) выражение (10) ведет к дифференциальному уравнению

= -Щ^). (11)

Решение уравнения (11) определяет ПРИ начальном условии

Л(0) = 0:

Р1^) = Ме~и. (12)

Выполняя последовательно преобразования (10) и (11) для всех величин Г|е[0,оо], получаем распределение вероятностей Пуассона Рц (А1) числа случайных событий г| с интенсивностью X в момент времени к

Р„ ( « = *,*) = = — е~а. (13)

г|! г)!

Поскольку множество г| е Н = Цо: ооЦ случайных событий по аксиоматике

Колмогорова содержит сг-алгебру, то вероятностная мера (13) однозначно определяет кумулятивную функцию распределения вероятностей:

(тьа = Щ = £ = £ ^е"«. (14)

к=о к- к=о к-

00

Используя определение числа ех = ^ хк /к\ в выражении (14), полу-

к=О

чаем, что Рн (г|Д£)е[0,1]. Следует отметить, что вероятностное пространство гарантирует однозначность определения обратной функции распределения вероятностей. Если задано какое-либо значение к кумулятивной функции распределения (ль а = = к, то значение случай-

Вихревой генератор случайных величин Пуассона по технологии кумулятивных частот ной величины щ можно получить как обратное преобразование щ — ^н Таким образом, задавая полные равномерные случайные

значения Рц1(г1>а = ^)£[0,1], можно однозначно получать случайные

величины г) этого распределения. Эта главная математическая модель содержит основания для конструирования генераторов случайных величин по заданным функциям их распределения. Используем это утверждение для разработки генератора пуассоновских случайных величин. Для этого необходимо иметь абсолютно полный и равномерный генератор без повторений и пропусков случайных величин [22-25].

В дискретном вероятностном пространстве число N событий фиксировано. Каждой количественной величине г| с вероятностью р(т\, ос = А,£) соответствует частота V (г), а = А,£) наблюдений случайных событий:

= = = = (15)

Согласно аксиоматике Колмогорова, определение вероятности р(г|,а = Я,£) имеет приоритет над определением частоты у(г), а — Поэтому предложено для значений частоты у(г), а = Х£) в (15) использовать математическое округление в дробной части для произведения р( ц,а = ЩЫ.

Программный код, в котором вихревой генератор тВеоп¥ииТм1&32В

[24] создает полное множество : V — равномерных целых случайных

величин г длиной п1 бит, представлен ниже. Функция Рог'55ои0() формирует массив pEta вероятностей Пуассона (13) и массив соответствующих частот пи^а (15). Последние хвостовые единичные частоты дополняют массив распределений частот nuEta до полноты 2Ш базовых равномерных случайных величин (15). Соответственно дополняются хвостовые вероятности pEta по хвостовым единичным частотам в пи^а. Такое незначительное отклонение в хвостовой части распределения (13) позволяет сохранить полноту генерации пуассоновских случайных величин по исходной генерации

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

0: 2W -1J. Значения кумулятивной

частотной функции размещены в массиве суммируемых частот snuEta. Обратная функция ^н1 (льа = реализована с помощью функции SearchEta() по алгоритму поиска индекса элемента в массиве кумулятивных частот cnuEta. Программные имена Р060202 и СР060202 выбраны произвольно.

Программный код

using nsDeonYuliTwist32D; // вихревой полный генератор

// целых равномерных величин

namespace Р060202 { class СР060202

{ static void Main(string[] args)

{ int w = 32; // битовая длина равномерных целых величин long N = IL « w; // количество случайных величин

Console.WriteLine("w = {0} N = {1}", w, N); double Alpha = 2.0;

Console.WriteLine("Alpha = {0:F2}", Alpha); int wX = 200;

doublet] pEta = new double[wX]; // вероятности Пуассона long[] nuEta = new long[wX]; // частоты Пуассона

long[] cnuEta = new long[wX]; // кумулятивные частоты int cEta = PoissonDY(Alpha, pEta, nuEta, cnuEta, N); VerifyProbability(N, cEta, pEta, nuEta, cnuEta); Console.WriteLine("cEta = {0}", cEta); cDeonYuliTwist32D DYG = new cDeonYuliTwist32D(); DYG.SetW(w); // битовая длина равномерных величин

DYG.Start(); // старт равномерного генератора

long[] nuDYG = new long[wX]; // частоты генератора

for (int i = 0; i < wX; i++) nuDYG[i] = 0; for (long j = 0; j < N; j++)

{ long z = DYG.NextO; // равномерная величина

int Eta = SearchEta(z, cnuEta, cEta);

nuDYG[Eta]++;

// счетчик случайных величин

}

.0; II

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

сумма вероятностей по Пуассону // сумма частот по Пуассону // сумма величин по генератору

pEta cnuEta <= cEta; Eta++)

nuEta") nuDYG")

}

double spEta = 0 long snuEta = 0; long snuDYG = 0; Console.Write("Eta Console.WriteLine ( " for (int Eta = 0; Eta { Console.WriteLine(

"{0,2} {1,12 :F10} {2,10} {3,10} {4,10}", Eta, pEta[Eta], nuEta[Eta], cnuEta[Eta], nuDYG[Eta]); spEta += pEta [Eta]; snuEta += nuEta[Eta]; snuDYG += nuDYG[Eta];

}

Console.Write("Sum spEta Console.WriteLine ( " Console.Write (" {0,12:F10} spEta, snuEta); Console.WriteLine ( " Console.ReadKey();

snuEta"); snuDYG"); {1,10}",

{0,10}", snuDYG); // просмотр результата

static int PoissonDY (double alpha, double[] pEta,

long[] nuEta, long[] cnuEta, long N)

double emAlpha = Math.Exp(-alpha);

double spEta =0.0; // сумма вероятностей

long snuEta = OL; // сумма частот

pEta[0] = 1.0 * emAlpha; // вероятность p(0) Пуассона spEta += pEta[0]; // сумма вероятностей

nuEta[0] = (long)Math.Round(pEta[0] * (double)N);

snuEta += nuEta[0]; cnuEta[0] = snuEta; double r = alpha; pEta[1] = r * emAlpha;

// сумма частот // кумулятивная частота cnu(0) // первое слагаемое Тейлора // вероятность р(1) Пуассона spEta += pEta[l]; // сумма вероятностей

nuEta[1] = (long)Math.Round(pEta[l] * (double)N); snuEta += nuEta[l]; // сумма частот

cnuEta[l] = snuEta; // кумулятивная частота cnu(l)

int Eta =2; // случайная величина

do

{ r *= alpha / (double)Eta; double p = r * emAlpha; long nu = (long)Math.Round(p * long sd = snuEta + nu; if (nu == 0L || sd > N) break; pEta [Eta] = p; spEta += p; nuEta[Eta] = nu; snuEta += nu;

cnuEta[Eta] = snuEta; // кумулятивная частота

Eta++; // следующая случайная величина Eta

} while (snuEta < N); Eta—;

long d = N - snuEta; if (d == 0L) double dlN =

do

{

return Eta; (1.0 - spEta)

/

// слагаемое для exp // вероятность p(Eta) (double)N);

// хвост // вероятность p(Eta) // суммарная вероятность // частота nu(Eta) // сумма частот

// недостающие частоты (double)d;

Eta++;

pEta[Eta] = dlN; // вероятность хвостового события nuEta[Eta] =1; // одночастотное событие

snuEta++; // сумма частот

cnuEta[Eta] = snuEta; // кумулятивная частота

} while (snuEta < N); return Eta;

}

static void VerifyProbability (long N, int cEta,

double[] pEta, long[] nuEta, long[] cnuEta) { double dN = (double)N;

for (int i = 0; i <= cEta; i++)

pEta[i] = (double)nuEta[i] / dN;

}

//-----------------------------------------------------------

static int SearchEta (long z, long[] cnuEta, int cEta)

{ int Eta = 0;

for (; Eta <= cEta; Eta++)

if (z < cnuEta[Eta]) break; return Eta;

}

//..............................................................

}

}

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

w = 32 N = 4294967296 Alpha =2.00

cEta = 16

Eta pEta nuEta cnuEta nuDYG

0 0 .1353352831 581260615 581260615 581260615

1 0 .2706705665 1162521231 1743781846 1162521231

2 0 .2706705665 1162521231 2906303077 1162521231

3 0 .1804470443 775014154 3681317231 775014154

4 0 .0902235222 387507077 4068824308 387507077

5 0 .0360894089 155002831 4223827139 155002831

6 0 .0120298029 51667610 4275494749 51667610

7 0 .0034370865 14762174 4290256923 14762174

8 0 .0008592717 3690544 4293947467 3690544

9 0 .0001909493 820121 4294767588 820121

10 0 .0000381898 164024 4294931612 164024

11 0 .0000069437 29823 4294961435 29823

12 0 .0000011572 4970 4294966405 4970

13 0 .0000001781 765 4294967170 765

14 0 .0000000254 109 4294967279 109

15 0 .0000000035 15 4294967294 15

16 0 .0000000005 2 4294967296 2

Sum spEta snuEta snuDYG

1 .000000000 4294967296 4294967296

В этом листинге столбец pEta содержит распределение вероятностей Пуассона (13). В следующем столбце пи^а находится соответствующее распределение частот. Сумма всех частот snuEta = 4294967296 должна совпадать с генерацией базовых равномерных случайных величин длиной 1^ = 32 бит полным числом ДГ = 2Ш = 232 = 4 294 967 296. Счетчики последнего столбца пиБУС подтверждают полное совпадение распределения генерируемых случайных величин с теоретическим распределением частот nuEta.

Теория завершена. Технология кумулятивного поиска обеспечивает безупречную генерацию случайных величин с распределением частот по вероятностям Пуассона. Тестирование программы Р060202 с произволь-

ным числом случайных величин длиной w е 3,32, J бит и параметром

а е [0,1,10,0] подтверждает безупречность получаемых результатов.

Конструкция и результаты. Класс nsDeonYuliCPoissonTwist32D, в котором создаются случайные величины по распределению Пуассона (13), приведен ниже. Этот класс является производным над базовым классом вихревого генератора равномерных случайных величин nsDeonYuliTwist32D. Пример генерации пуассоновских случайных величин показан далее в программе Р060302.

Класс nsDeonYuliCPoissonTwist32D

using nsDeonYuliTwist32D; // вихревой полный генератор

// целых равномерных величин

namespace nsDeonYuliCPoissonTwist32D { class cDeonYuliCPoissonTwist32D : cDeonYuliTwist32D

{ public long N; // количество равномерных событий

public double dN; // количество равномерных событий

public double Alpha =2.0; // параметр Alpha

double emAlpha; // exp(-Alpha)

public int cEta; // максимальное Eta

public doublet] pC; // распределение вероятностей

public long[] nuC; // распределение частот

public long[] cnuC; // кумулятивные частоты //--------------------------------------------------------------

public cDeonYuliCPoissonTwist32D () {} //--------------------------------------------------------------

public void CStart(double alpha)

{ Alpha = alpha; // параметр Alpha

base.Start (); // равномерный вихревой генератор

CStartlnside();

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

}

//--------------------------------------------------------------

public void CTimeStart(double alpha)

{ Alpha = alpha; // параметр Alpha

base.TimeStart(); // равномерный вихревой генератор

CStartlnside();

}

void CStartlnside!) { int wX = 200;

pC = new double[wX]; // распределение вероятностей

nuC = new long[wX]; // распределение частот

cnuC = new long[wX]; // кумулятивные частоты

emAlpha = Math.Exp(-Alpha); // exp(-Alpha)

N = (long)Nl + 1L; // количество равномерных событий

dN = (double)N; // количество равномерных событий

cEta = CPoissonDY(); // вероятности и частоты

CVerifyProbability(); // проверка вероятности

public int CNext()

{ uint z =base.Next(); // равномерная случайная величина return CSearchEta(z); // случайная величина Пуассона

II-

II-

}

int CPoissonDY()

{ double spC =0.0; // сумма вероятностей

long snuC = 0L; // сумма частот

pC[0] = 1.0 * emAlpha; // вероятность p(0) Пуассона spC += pC[0]; // сумма вероятностей

nuC[0] = (long)Math.Round(pC[0] * dN);//частота nu(0) snuC += nuC[0]; // сумма частот

cnuC[0] = snuC; // кумулятивная частота cnu(0)

double r = Alpha; // первое слагаемое Тейлора

pC[l] = г * emAlpha; // вероятность p(l) Пуассона

spC += pC[l]; // сумма вероятностей

nuC[1] = (long)Math.Round(pC[l] * dN); // частота nu(l) snuC += nuC[l]; // сумма частот

cnuC[l] = snuC; // кумулятивная частота cnu(l)

int Eta =2; // случайная величина

do

{ r *= Alpha / (double)Eta; // слагаемое для exp

double p = r * emAlpha; // вероятность p(Eta)

long nu = (long)Math.Round(p * dN);

if (nu == OL) break; long sd = snuC + nu;

if (nu == pC[Eta] = p; spC += p; nuC[Eta] = nu; snuC += nu; cnuC[Eta] = snuC; Eta++; } while (snuC < N); Eta—;

long d = N - snuC; if (d == OL) double dlN =

do

{

// хвостовые нулевые частоты 0L || sd > N) break;

// хвост // вероятность p(Eta) // сумма вероятностей // частота nu(Eta) // сумма частот // кумулятивная частота // следующая случайная величина Eta

// хвостовые частоты

return Eta; (1.0 - spC) /

(double)d;

Eta++; pC[Eta] = dlN; nuC [Eta] = 1; snuC++;

cnuC[Eta] = snuC; } while (snuC < N); return Eta;

// вероятность хвостового события // одночастотное событие // сумма частот // кумулятивная частота

}

void CVerifyProbability() { for (int i = 0; i <= cEta; i++) pC[i] = (double)nuC[i] / dN;

1

и--------------------------------------------------------------

int CSearchEta(uint z) { int Eta = 0;

for (; Eta <= cEta; Eta++)

if (z < cnuC[Eta]) break; return Eta;

}

//..............................................................

}

}

В качестве примера с помощью следующего программного кода покажем полную генерацию случайных величин Пуассона на базовом пространстве равномерных случайных величин длиной, например, w = 7 бит (при ПРОИЗВОЛЬНОМ IV < 32 листинг N = 2W=32 = 4 294 967 296 случайных величин оказывается слишком длинным). Это позволяет в наглядной форме показать работу вихревого генератора nsDeonYuliCPoisson-Twist32D с соблюдением распределения Пуассона. Программные имена Р060302 и сР060302 выбраны произвольным образом:

using nsDeonYuliCPoissonTwist32D; // вихревой генератор Пуассона

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

namespace Р060302 { class СР060302

{ static void Main(string[] args) { cDeonYuliCPoissonTwist32D PT =

new cDeonYuliCPoissonTwist32D(); int w = 7; // битовая длина равномерных величин

PT.SetW(w); // битовая длина равномерных величин

double Alpha =2.0; // параметр Alpha

PT.CStart(Alpha); // старт генератора по умолчанию

// PT.CTimeStart(Alpha); // старт по датчику времени

Console.WriteLine("w = {0} N = {1}", PT.w, PT.N); Console.WriteLine("Alpha = {0:F2}", Alpha); Console.WriteLine("cEta = {0}", PT.cEta); int wX = 200;

int[] nuG = new int[wX]; // частоты генератора

for (int i = 0; i < wX; i++) nuG[i] = 0; for (int i = 0, j = 1; i < PT.N; i++, j++) { int Eta = PT.CNextO; // пуассоновская величина

Console.Write("{0,5}", Eta); if (j % 8 == 0) Console.WriteLine(); nuG[Eta]++; // счетчик случайных величин

}

Console.WriteLine ();

double spEta =0.0; // сумма вероятностей по Пуассону long snuEta =0; // сумма частот по Пуассону

int snuG =0; // сумма частот генератора

Console.Write("Eta рС nuC");

Console.WriteLine(" cnuC nuDYG");

for (int Eta = 0; Eta <= PT.cEta; Eta++) { Console.WriteLine(

"{0,2} {1,12:F10} {2,8} {3,8} {4,8}", Eta, PT.pC[Eta], PT.nuC[Eta], PT.cnuC[Eta], nuG[Eta]); spEta += PT.pC [Eta]; snuEta += PT.nuC[Eta]; snuG += nuG[Eta];

}

Console.Write("Sum spC snuC");

Console.WriteLine (" snuDYG");

Console.WriteLine(

{0,12:F10} {1,8} {2,8}",

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

}

}

}

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

w = 7 N = 128 Alpha =2.00 cEta = 6

16 3 13 1

2 1 0 2 0 2

3 2 1 4 2 3

0 4 2 1 3 0

1 1 5 2 0 1

3 2 14 13

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

0 4 2 1 2 0

1 1 4 2 5 1

2 2 13 12 5 3 2 1 2 5

1 0 3 2 4 1

2 2 13 12

4 3 2 0 2 4 10 3 14 1

2 10 3 12

3 3 2 0 2 3 Eta pC nuC

0 0.1328125000 17

1 0.2734375000 35

2 0.2734375000 35

3 0.1796875000 23

4 0.0937500000 12

5 0.0390625000 5

6 0.0078125000 1 sum spC snuC

1.0000000000 128

1 2

3 3 0 0 1 2

2 3

4 0 1 1 2 2 4 5 1 1 2 2

3 4 0 1 2 2 3 3 0 1

cnuC nuDYG 17 17

52 35

87 35

110 23

122 12

127 5

128 1 snuDYG

128

Этот результат показывает последовательность случайных величин, которые создает вихревой генератор nsDeonYuliCPoissonTwist32D. Непосредственный подсчет по листингу подтверждает, что случайные величины, их вероятности и частоты действительно обеспечивают распределение Пуассона. Аналогичные результаты можно получить при других базовых равномерных случайных величинах числом N = 232 и длиной w < 32 бит.

Обсуждение. Как было отмечено выше, распределение Пуассона обладает основными свойствами начальных вероятностных моментов по математическому ожиданию и дисперсии. Математическое ожидание для такого распределения характеризует среднее число успешных результатов на каком-либо интервале. Оно определяется на основе опытно полученных данных для конкретной ситуации. Далее если математическое ожидание найдено, то дисперсия также будет известна в силу свойств распределения вероятностей Пуассона. Если окажется, что значения математического ожидания и дисперсии достаточно близки, то гипотеза о распределении случайной величины в соответствии с законом Пуассона верна. Однако если будет наблюдаться резкое различие в значениях этих характеристик, то это будет свидетельствовать против гипотезы о пуас-соновском распределении этой случайной величины.

Таким образом, прежде всего необходимо подтвердить два основных указанных выше свойства распределения Пуассона о равенстве параметра а математическому ожиданию и дисперсии. Программный код, проверяющий это, представлен ниже (здесь генератор создает N = 2W = 232 = = 4294967296 случайных величин; программные имена Р060402 и сР060402 выбраны произвольно):

using nsDeonYuliCPoissonTwist32D; // вихревой генератор Пуассона

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

namespace Р060402 { class СР060402

{ static void Main(string[] args) { cDeonYuliCPoissonTwist32D PT =

new cDeonYuliCPoissonTwist32D(); PT.SetW(32); // битовая длина равномерных величин

double Alpha =2.0; // параметр Alpha

PT.CStart(Alpha); // старт генератора

Console.WriteLine("w = {0} N = {1}", PT.w, PT.N); Console.WriteLine("Alpha = {0:F2}", Alpha); double pi = 1.0 / (double)PT.N; // вероятность события double m = 0.0; // математическое ожидание

double D = 0.0; // дисперсия

for (long i = 0; i < PT.N; i++)

{ int Eta = PT.CNext(); ш += Eta * pi; D += Eta * Eta * pi;

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

D = D - m * m;

Console.WriteLine("m = {0:F10}", m); Console.WriteLine("D = {0:F10}", D);

Console.ReadKey();

// просмотр результата

После запуска программы Р060401 на мониторе появляется листинг:

w = 32 N = 4294967296 Alpha =2.00 m = 2.0000000014 D = 2.0000000116

Этот листинг показывает полученные значения математического ожидания m и дисперсии D. Их небольшое отличие от параметра а = 2,0 связано с дискретностью модели Пуассона по вероятностям и частотам событий. Таким образом, полное дискретное моделирование случайных величин с распределением Пуассона на основе вихревого базового генератора равномерных случайных величин подтверждает важные свойства по математическому ожиданию и дисперсии. Кроме того, автоматическое продление серий базовых равномерных случайных величин значительно расширяет период неповторяемости и серий случайных величин Пуассона. Это значительно превосходит известные генераторы [19,20] на основе алгоритма вероятностной сходимости.

Заключение. Анализ исходного материала показывает, что алгоритмы генерации случайных величин Пуассона по технологии вероятностной сходимости допускают различные реализации распределения. Кроме того, могут наблюдаться пропуски в таких распределениях, что неверно в теории процессов Пуассона. Поскольку качество работы генераторов сильно зависит от используемых базовых генераторов равномерных случайных величин, предложено применить равномерный вихревой генератор nsDeonYuliCPoissonTwist32D, чтобы обеспечить полноту технологии кумулятивного массива частот на пространстве Пуассона. Это позволяет сократить время вычислений и повысить качество генерации. Проведенные эксперименты реально подтверждают полное совпадение распределений получаемых случайных величин с теоретическими выводами на дискретном вероятностном пространстве Пуассона. Автоматическая настройка

параметров используемого базового вихревого равномерного генератора nsDeonYuHTwist32D позволяет значительно увеличить общий период неповторяемости генерации серий случайных величин Пуассона. Полученные результаты можно использовать во многих прикладных задачах.

ЛИТЕРАТУРА

[1] Feller W. An introduction to probability theory and its applications. Vol. 2. WSE Press, 2008.

[2] Gnedenko B. Theory of probability. CRC Press, 1998.

[3] Zhang H., Li B. Characterizations of discrete compound Poisson distribution. Commun. Stat. — Theory Methods, 2016, vol. 45, iss. 22, pp. 6789-6802.

DOI: https://doi.org/10.1080/03610926.2014.901375

[4] Guerriero V. Power low distribution: method of multi-scale inferential statistics. JMMF, 2012, vol. 1, no. 1, pp. 21-28.

[5] Arkani M., Khalafî H., Vosoughi N. A flexible multichannel digital random pulse generator based on FPGA. WJNST, 2013, vol. 3, no. 4, pp. 109-116.

DOI: https://doi.org/10.4236/wjnst.2013.34019

[6] Rasoanaivo A.N., Horowitz W.A. Medium-induced radiation beyond the Poisson approximation. J. Phys.: Conf. Ser., 2017, vol. 878, art. 012029.

DOI: https://doi.org/10.1088/1742-6596/878/1/012029

[7] Veiga A., Spinelli E. A pulse generator with poisson-exponential distribution for emulation of radioactive decay events. Proc. 7th LASCAS, 2016, pp. 31-34.

DOI: https://doi.org/10.1109/LASCAS.2016.7451002

[8] Kirkpatrick J.M., Young B.M. Poisson statistical methods for the analysis of low-count gamma spectra. IEEE Trans. Nucl. Sci., 2009, vol. 56, iss. 3, pp. 1278-1282.

DOI: https://doi.Org/10.l 109/TNS.2009.2020516

[9] Marsaglia G., Tsang W.W., Wang J. Fast generation of discrete random variables. /. Stat. Softw., 2004, vol. 11, iss. 3,pp. 1-11. DOI: https://doi.org/10.18637/jss.v011.i03

[10] Kumari S., Valarmathi M., Prince S. Generation of pseudorandom binary sequence using shot noise for optical encryption. Proc. ICCSP, 2016, pp. 0119-0122.

DOI: https://d0i.0rg/m.l 109/ICCSP.2016.7754537

[11] Hosamo M. A study of the source traffic generator using Poisson distribution for ABR service. Model. Simul. Eng., 2012, vol. 2012, art. 408395.

DOI: https://doi.org/10.1155/2012/408395

[12] Zhang H., Liu Y., Li B. Notes on discrete compound Poisson model with applications to risk theory. Insur.: Math. Econ., 2014, vol. 59, pp. 325-336.

DOI: https://doi.Org/10.1016/j.insmatheco.2014.09.012

[13] Shanmugam R. Informatics about fear to report rapes using bumped-up Poisson model. Amer. J. Biostat., 2013, vol. 3, iss. 1, pp. 17-29.

DOI: https://doi.org/10.3844/amjbsp.2013.17.29

[14] Menyaev Yu.A., Nedosekin D.A., Sarimollaoglu M., et al. Optical clearing in photoa-coustic flow cytometry. Biomed. Opt. Express, 2013, vol. 4, iss. 12, pp. 3030-3041.

DOI: https://doi.Org/10.1364/BOE.4.003030

[15] Menyaev Yu.A., Carey K.A., Nedosekin D.A., et al. Preclinical photoacoustic models: application for ultrasensitive single cell malaria diagnosis in large vein and artery. Biomed. Opt. Express, 2016, vol. 7, iss. 9, pp. 3643-3658.

DOI: https://doi.org/10.1364/BOE7.003643

[16] Sitek A., Celler A.M. Limitations of Poisson statistics in describing radioactive decay. PM, 2015, vol. 31, iss. 8, pp. 1105-1107. DOI: https://doi.Org/10.1016/j.ejmp.2015.08.015

[17] Menyaev Yu.A., Zharov V.P. Experience in development of therapeutic photomatrix equipment. Biomed. Eng., 2006, vol. 40, iss. 2, pp. 57-63.

DOI: https://doi.org/10.1007/sl0527-006-0042-6

[18] Menyaev Yu.A., Zharov V.P. Experience in the use of therapeutic photomatrix equipment. Biomed. Eng., 2006, vol. 40, iss. 3, pp. 144-147.

DOI: https://doi.org/10.1007/sl0527-006-0064-0

[19] Knuth D.E. Art of computer programming. Vol. 2. Seminumerical algorithms. Addison-Wesley, 1997.

[20] Knuth D.E. Art of computer programming. Vol. 4A. Combinatorial Algorithms. P. 1. Addison-Wesley, 2011.

[21] Kolmogorov A.N., Fomin S.V. Elements of the theory of functions and functional analysis. Dover Publ., 1999.

[22] Deon A.F., Menyaev Yu.A. The complete set simulation of stochastic sequences without repeated and skipped elements. J. Univers. Comput. Sci., 2016, vol. 22, iss. 8, pp. 1023-1047. DOI: https://doi.org/10.3217/jucs-022-08-1023

[23] Deon A.F., Menyaev Yu.A. Parametrical tuning of twisting generators. /. Сотр. Sci., 2016, vol. 12, iss. 8, pp. 363-378. DOI: https://doi.org/10.3844/jcssp.2016.363.378

[24] Deon A.F., Menyaev Yu.A. Twister generator of arbitrary uniform sequences. /. Univers. Comput. Sci., 2017, vol. 23, iss. 4, pp. 353-384.

DOI: https://doi.org/10.3217/jucs-023-04-0353

[25] Deon A.F., Menyaev Yu.A. Uniform twister plane generator. J. Сотр. Sci., 2018, vol. 14, iss. 2, pp. 260-272. DOI: https://doi.org/10.3844/jcssp.2018.260.272

Деон Алексей Федорович — канд. техн. наук, доцент кафедры «Программное обеспечение ЭВМ и информационные технологии» (Российская Федерация, 105005, Москва, 2-я Бауманская ул., д. 5, стр. 1).

Дмитриев Дмитрий Дмитриевич — канд. техн. наук, доцент кафедры «Технологии приборостроения» (Российская Федерация, 105005, Москва, 2-я Бауманская ул., д. 5, стр. 1).

Меняев Юлиан Алексеевич — канд. техн. наук, сотрудник Института исследования рака им. Уинтропа Рокфеллера (США, Арканзас AR 72202, Литл-Рок, 4018 W Capitol Ave).

Просьба ссылаться на эту статью следующим образом:

Деон А.Ф., Дмитриев Д.Д., Меняев Ю.А. Вихревой генератор случайных величин Пуассона по технологии кумулятивных частот. Вестник МГТУ им. Н.Э. Баумана. Сер. Приборостроение, 2020, № 1 (130), с. 101-123. DOI: https://doi.org/10.18698/0236-3933-2020-l-101-123

TWISTER GENERATOR OF POISSON RANDOM NUMBERS WITH THE USE OF CUMULATIVE FREQUENCY TECHNOLOGY

A.F. Deon1 deonalex@mail.ru

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

D.D. Dmitriev1 ddd.1955@gmail.com

Yu.A. Menyaev2 yamenyaev@uams.edu

1 Bauman Moscow State Technical University, Moscow, Russian Federation

2 Winthrop P. Rockefeller Cancer Institute, Little Rock, AR, USA

Abstract

The widely known generators of Poisson random variables are associated with different modifications of the algorithm based on the convergence in probability of a sequence of uniform random variables to the created stochastic number. However, in some situations, this approach yields different discrete Poisson probability distributions and skipping in the generated numbers. This paper offers a new approach for creating Poisson random variables based on the complete twister generator of uniform random variables, using cumulative frequency technology. The simulation results confirm that probabilistic and frequency distributions of the obtained stochastic numbers completely coincide with the theoretical Poisson distribution. Moreover, combining this new approach with the tuning algorithm of basic twister generation allows for a significant increase in length of the created sequences without using additional RAM of the computer

Keywords

Pseudorandom number generator, stochastic sequences, Poisson distribution, twister generator

Received 15.11.2019 Accepted 25.11.2019 © Author(s), 2020

REFERENCES

[1] Feller W. An introduction to probability theory and its applications. Vol. 2. WSE Press, 2008.

[2] Gnedenko B. Theory of probability. CRC Press, 1998.

[3] Zhang H., Li B. Characterizations of discrete compound Poisson distribution. Commun. Stat. — Theory Methods, 2016, vol. 45, iss. 22, pp. 6789-6802.

DOI: https://doi.org/10.1080/03610926.2014.901375

[4] Guerriero V. Power low distribution: method of multi-scale inferential statistics. JMMF, 2012, vol. 1, no. 1, pp. 21-28.

[5] Arkani M., Khalafi H., Vosoughi N. A flexible multichannel digital random pulse generator based on FPGA. WJNST, 2013, vol. 3, no. 4, pp. 109-116.

DOI: https://doi.org/10.4236/wjnst.2013.34019

[6] Rasoanaivo A.N., Horowitz W.A. Medium-induced radiation beyond the Poisson approximation. /. Phys.: Conf. Ser., 2017, vol. 878, art. 012029.

DOI: https://doi.Org/10.1088/1742-6596/878/l/012029

[7] Veiga A., Spinelli E. A pulse generator with Poisson-exponential distribution for emulation of radioactive decay events. Proc. 7th LASCAS, 2016, pp. 31-34.

DOI: https://doi.org/10.1109/LASCAS.2016.7451002

[8] Kirkpatrick J.M., Young B.M. Poisson statistical methods for the analysis of low-count gamma spectra. IEEE Trans. Nucl. Sci., 2009, vol. 56, iss. 3, pp. 1278-1282.

DOI: https://doi.org/10.1109/TNS.2009.2020516

[9] Marsaglia G., Tsang W.W., Wang J. Fast generation of discrete random variables. J. Stat. Softw., 2004, vol. 11, iss. 3, pp. 1-11. DOI: https://doi.org/10.18637/jss.v011.i03

[10] Kumari S., Valarmathi M., Prince S. Generation of pseudorandom binary sequence using shot noise for optical encryption. Proc. ICCSP, 2016, pp. 0119-0122.

DOI: https://doi.org/10-l 109/ICCSP.2016.7754537

[11] Hosamo M. A study of the source traffic generator using Poisson distribution for ABR service. Model. Simul. Eng., 2012, vol. 2012, art. 408395.

DOI: https://doi.org/10.1155/2012/408395

[12] Zhang H., Liu Y., Li B. Notes on discrete compound Poisson model with applications to risk theory. Insur.: Math. Econ., 2014, vol. 59, pp. 325-336.

DOI: https://doi.Org/10.1016/j.insmatheco.2014.09.012

[13] Shanmugam R. Informatics about fear to report rapes using bumped-up Poisson model. Amer. J. Biostat., 2013, vol. 3, iss. 1, pp. 17-29.

DOI: https://doi.org/10.3844/amjbsp.2013.17.29

[14] Menyaev Yu.A., Nedosekin D.A., Sarimollaoglu M., et al. Optical clearing in photo-acoustic flow cytometry. Biomed. Opt. Express, 2013, vol. 4, iss. 12, pp. 3030-3041. DOI: https://doi.org/10.1364/BOE.4.003030

[15] Menyaev Yu.A., Carey K.A., Nedosekin D.A., et al. Preclinical photoacoustic models: application for ultrasensitive single cell malaria diagnosis in large vein and artery. Biomed. Opt. Express, 2016, vol. 7, iss. 9, pp. 3643-3658.

DOI: https://doi.org/10.1364/BOE.7.003643

[16] Sitek A., Celler A.M. Limitations of Poisson statistics in describing radioactive decay. PM, 2015, vol. 31, iss. 8, pp. 1105-1107. DOI: https://doi.Org/10.1016/j.ejmp.2015.08.015

[17] Menyaev Yu.A., Zharov V.P. Experience in development of therapeutic photomatrix equipment. Biomed. Eng., 2006, vol. 40, iss. 2, pp. 57-63.

DOI: https://doi.org/10.1007/sl0527-006-0042-6

[18] Menyaev Yu.A., Zharov V.P. Experience in the use of therapeutic photomatrix equipment. Biomed. Eng., 2006, vol. 40, iss. 3, pp. 144-147.

DOI: https://doi.org/10.1007/sl0527-006-0064-0

[19] Knuth D.E. Art of computer programming. Vol. 2. Seminumerical algorithms. Addison-Wesley, 1997.

[20] Knuth D.E. Art of computer programming. Vol. 4A. Combinatorial Algorithms. P. 1. Addison-Wesley, 2011.

[21] Kolmogorov A.N., Fomin S.V. Elements of the theory of functions and functional analysis. Dover Publ., 1999.

[22] Deon A.F., Menyaev Yu.A. The complete set simulation of stochastic sequences without repeated and skipped elements. J. Univers. Comput. Sci., 2016, vol. 22, iss. 8, pp. 1023-1047. DOI: https://doi.org/10.3217/jucs-022-08-1023

[23] Deon A.F., Menyaev Yu.A. Parametrical tuning of twisting generators. J. Comp. Sci., 2016, vol. 12, iss. 8, pp. 363-378. DOI: https://doi.org/10.3844/jcssp.2016.363.378

[24] Deon A.F., Menyaev Yu.A. Twister generator of arbitrary uniform sequences. /. Univers. Comput. Sci., 2017, vol. 23, iss. 4, pp. 353-384.

DOI: https://doi.org/10.3217/jucs-023-04-0353

[25] Deon A.F., Menyaev Yu.A. Uniform twister plane generator. /. Comp. Sci., 2018, vol. 14, iss. 2, pp. 260-272. DOI: https://doi.org/10.3844/jcssp.2018.260.272

Deon A.F. — Cand. Sc. (Eng.), Assoc. Professor, Department of Computer Software and Information Technology, Bauman Moscow State Technical University (2-ya Bau-manskaya ul. 5, str. 1, Moscow, 105005 Russian Federation).

DmitrievD.D. — Cand. Sc. (Eng.), Assoc. Professor, Department of Instrumentation Technology, Bauman Moscow State Technical University (2-ya Baumanskaya ul. 5, str. 1, Moscow, 105005 Russian Federation).

Menyaev Yu.A. — Cand. Sc. (Eng.), employer, Winthrop P. Rockefeller Cancer Institute, University of Arkansas for Medical Science (4018 W Capitol Ave, Little Rock, AR 72202 USA).

Please cite this article in English as:

Deon A.F., Dmitriev D.D., Menyaev Yu.A. Twister generator of Poisson random numbers with the use of cumulative frequency technology. Herald of the Bauman Moscow State Technical University, Series Instrument Engineering, 2020, no. 1 (130), pp. 101-123 (in Russ.). DOI: https://doi.org/10.18698/0236-3933-2020-l-101-123

i Надоели баннеры? Вы всегда можете отключить рекламу.