УДК 519.872
Е. Ю. Шемахин, А. П. Кирпичников
МОДЕЛИРОВАНИЕ МНОГОКАНАЛЬНОЙ ОТКРЫТОЙ СИСТЕМЫ МАССОВОГО
ОБСЛУЖИВАНИЯ С ОГРАНИЧЕНИЯМИ В СРЕДЕ VISUAL STUDIO 2010. ЧАСТЬ 2. ГСЧ
Ключевые слова: Система массового обслуживания, характеристики системы, моделирование, генерация случайных чисел,
тестирование псевдослучайной последовательности.
Рассматриваются вопросы генерации последовательности случайных чисел и тестирования полученной псевдослучайной последовательности, используемой в алгоритме, моделирующем многоканальную открытую систему массового обслуживания.
Keywords: queuing system, characteristics of the system, modeling, generation of random numbers, randomness tests.
The problems of generating a sequence of random numbers and test the resulting pseudo-random-sequence used in the algorithm, simulating an open multi-channel queuing system.
Алгоритм, реализующий модель многоканальной открытой СМО с ограничениями [1], как уже упоминалось, на каждом шаге получает две случайные величины: время обслуживания пришедшего в данный момент требования и время до появления следующего требования в системе. Данные промежутки времени распределены по экспоненциальному закону [2]: F (()= 1 — e Я', где Я -интенсивность потока событий. Таким образом, промежуток времени конкретного события, может быть получен из выражения:
t; = -
1 -In (1-дгД
2
где x{ - случайная величина, обладающая равномерным распределением на интервале (0;l). На практике этот интервал целесообразно взять равным (0,0001;0,9999), ограничивая последовательность получаемых от генератора случайных величин. При сужении интервала уменьшается точность вычислений, а при расширении сходимость динамической величины не может быть гарантирована.
Очевидно, получить при помощи программного обеспечения действительно случайную величину невозможно, можно лишь аппроксимировать некоторые её свойства. Полученные последовательности случайных величин должны удовлетворять следующим критериям: обладать равномерным распределением на (0,00010,9999), математическим ожиданием равным 0,5, достаточно большим периодом. Если полученная последовательность удовлетворяет этим критериям, то для дальнейшего исследования необходимо произвести ряд тестов: частотный побитовый тест, частотный блочный тест, тест на последовательность одинаковых битов, тест на равномерность распределения по квантилям. Первые три теста входят в пакет статистических тестов «DIEHARD» [3] и «NIST» [4], самых строгих на данный момент тестов, предназначенных для проверки последовательностей случайных величин. Для оценки данными статистическими методами последовательности действительных чисел, последние должны быть преобразованы в последовательность битов согласно следующему правилу: величи-
ны большие 0,5 соответствуют единице, величины меньшие 0,5 соответствуют нулю, величины равные 0,5 не рассматриваются. Такое преобразование не искажает результаты тестов.
Частотный побитовый тест
Суть данного теста заключается в определении соотношения между нулями и единицами во всей двоичной последовательности. Цель — выяснить, действительно ли число нулей и единиц в последовательности приблизительно одинаковы, как это можно было бы предположить в случае истинно случайной бинарной последовательности. Тест оценивает, насколько близка доля единиц к 0,5. Таким образом, число нулей и единиц должно быть примерно одинаковым. Результатом теста является погрешность полученного соотношения. Очевидно, чем меньше эта величина, тем ближе сгенерированная псевдослучайная последовательность к абсолютно случайной.
Частотный блочный тест
Суть теста — определение доли единиц внутри блока длиной т бит. Цель — выяснить действительно ли частота повторения единиц в блоке длиной т бит приблизительно равна т/2, как можно было бы предположить в случае абсолютно случайной последовательности.
Тест на последовательность одинаковых битов
Суть состоит в подсчёте полного числа рядов в исходной последовательности, где под словом «ряд» подразумевается непрерывная подпоследовательность одинаковых битов. Ряд длиной k бит состоит из k абсолютно идентичных битов, начинается и заканчивается с бита, содержащего противоположное значение. Цель данного теста — сделать вывод о том, действительно ли количество рядов, состоящих из единиц и нулей с различными длинами, соответствует их количеству в случайной последовательности. В частности, определяется быстро либо медленно чередуются единицы и нули в исходной последовательности.
ГСЧ, реализованные в программном обеспечении, приведены ниже.
Криптографический генератор CSP среды Visual Studio 2010
Встроенный в среду Visual Studio 2010 криптографический генератор [5] позволяет получить последовательность байт указанной длины. Алгоритмы этого генератора достоверно не известны, т.к. используются для защиты информации при передаче данных, и раскрывать их со стороны разработчика было бы глупо. Однако, известно, что при генерации используется определённая информация об операционной системе и оборудовании ПК, на котором запускается крипто генератор. Эта информация включает в себя MAC адрес сетевой карты (при её наличии), сборку системы, системное время, процессорное время, получаемое во время аппаратных прерываний и некоторые другие величины. Одним из достоинств этого генератора является рост в геометрической прогрессии его периода с увеличением длины последовательности байт, получаемой при генерации каждого числа. Главным же недостатком является «сгущение» элементов генерируемой последовательности около середины интервала с увеличением длины последовательности байт (рис. 1), что делает его непригодным для использования в алгоритме. Второстепенным недостатком является посредственная скорость генерации, зависящая как от самого алгоритма получения, так и от длины последовательности байт. Несмотря на эти недостатки, нетривиальный алгоритм и надёжность криптографического генератора позволяют использовать его в программе для генерации всех начальных значений других генераторов.
X, =
Рис. 1 - Криптографический генератор У8 2010, N = 50000, п = 32
Здесь N - длина последовательности случайных величин, п - число байт, получаемое от крипто генератора.
Формула, определяющая значение / — й полученной случайной величины, приведена ниже:
p+Z А,
j=1
255•n+2•p
р = 1 + max{x)y =
255 • 10~4 •п
хфу)' 1 — 2 • 10~4
где ■ - последовательность байт, получаемая от
крипто генератора для / — й вычисляемой величины, число р определяет нижнюю и верхнюю границу интервала генерации в зависимости от длины получаемой последовательности байт.
Ниже приведены усреднённые на основе множества испытаний характеристики криптографического генератора и результаты статистических тестов. Применять данный генератор в алгоритме напрямую для получения случайных величин возможно лишь при п = 1 (табл. 1).
Таблица 1 - Криптографический генератор, N=2-10®, п=1
Время генерации ~ 540мс
Минимальное значение величины ~ 0,0038910
Максимальное значение величины ~ 0,9961089
Период генератора ~ 70000
Наименьшая частота величины ~ 210
Наибольшая частота величины ~ 310
Частотный побитовый тест, абсолютное отклонение ~ 0,0016742988
относительное отклонение (%) ~ 0,33485975
Частотный блочный тест (5 блоков), максимальное абсолютное отклонение ~ 0,0041499714
максимальное относительное отклонение(%) ~ 0,82999428
Тест на последовательность одинаковых битов, максимальная длина ~16
средняя длина ~ 2,007296125
минимальная длина 1
Распределение величин по 10 квантилям (%) 9,94;10,25;10,03; 9,84;10,12;9,94; 9,85;10,14;10,29; 9,62
Отклонение от среднего абсолютное ~ 6,8747081 -10 5
относительное (%) ~ 0,013749416
Таблица 2 - Криптографический генератор, ^4-106, п = 64
Время генерации ~1320мс
Минимальное значение величины ~ 0,3281058
Максимальное значение величины ~ 0,6828595
Период генератора ~ 2,5 -106
Наименьшая частота величины ~ 2
Наибольшая частота величины ~ 1450
Частотный побитовый тест, абсолютное отклонение ~ 0,0004002753
относительное отклонение (%) ~ 0,08005508
Частотный блочный тест (5 блоков), максимальное абсолютное отклонение ~ 0,0005967
максимальное относительное отклонение (%) ~ 0,119332041
Тест на последовательность одинаковых битов, максимальная длина ~ 21
средняя длина ~ 2,00184096
минимальная длина 1
Распределение величин по 10 квантилям (%) 0;0;0 0,28;49,73;49,72 0,28;0;0;0
Отклонение от среднего абсолютное ~ 5,14603 -10 5
относительное (%) ~ 0,01029201
Мультипликативный и смешанный конгруэнтный методы
Последовательность случайных чисел может быть получена при помощи следующей формулы [6]: х1 = (а ■ х1—1 + с)тоё(т), где хг—1 - предыдущее полученное число последовательности, т - модуль, а - множитель, с - приращение. Для мультипликативного метода параметр с = 0 . Данные параметры при инициализации создаются случайным образом при помощи криптографического генератора, описанного выше, в программе предусмотрена возможность указать количество разрядов числа (ПХ0, па и пс) для параметров. Недостатком
данного метода является ненадёжность из-за зависимости качества получаемой последовательности от выбранных параметров.
Существует достаточно большое число комбинаций параметров, при которых данный метод позволяет получить последовательность чисел близкую к абсолютно случайной, а также обладающую огромным периодом, порядка 2,1? • 10".
Однако, при использовании заранее предопределённой последовательности, даже удовлетворяющей критериям, предъявляемым ей, отсутствует возможность изучить поведение получаемых в процессе работы алгоритма характеристик при различных последовательностях случайных величин, получаемых от одного типа генератора. Достоинством данного метода является скорость генерации.
Гистограмма частот (рис. 2) и характеристики (табл. 3) мультипликативного конгруэнтного генератора представлены ниже.
Таблица 3 - Мультипликативный конгруэнтный генератор, N = 2-106, па = 4, пх0 = 4
Время генерации ~ 427мс
Минимальное значение величины ~ 0,0003524
Максимальное значение величины ~ 0,9997463
Период генератора ~ 1,9 -106
Наименьшая частота величины ~1
Наибольшая частота величины ~ 58
Частотный побитовый тест, абсолютное отклонение ~ 0,0044925
относительное отклонение (%) ~ 0,8985
Частотный блочный тест (5 блоков), максимальное абсолютное отклонение ~ 0,004529
максимальное относительное отклонение (%) ~ 0,9059
Тест на последовательность одинаковых битов, максимальная длина ~13
средняя длина ~ 2,0077534
минимальная длина 1
Распределение величин по 10 квантилям (%) 10,95;9,36;10,03; 9,8;10,31;9,23 10;9,57;10,26;10,49
Отклонение от среднего абсолютное ~ 0,00039945
относительное (%) ~ 0,079898
Гистограмма частот (рис. 3) и характеристики (табл. 4) смешанного конгруэнтного генератора представлены ниже.
Как можно заметить по гистограмме, изображённой на рис. 3, обладая достаточно большим периодом, смешанный конгруэнтный генератор, тем не менее, зачастую генерирует довольно большое количество одинаковых значений.
Рис. 2 - Мультипликативный конгруэнтный генератор, N = 50000, na = 4, nx0 = 4
еоо
500
400
300
200
100
0.0001 0.2001 0.4001 0.6001 0.3001 Рис. 3 - Смешанный конгруэнтный генератор, N = 50000, па = 4, пх0 = 4, пс = 4
Таблица 4 - Смешанный конгруэнтный генератор, N = 4-106, пх0 = 4, па = 4, пс = 4
Время генерации ~ 591
Минимальное значение величины ~ 0,0048902
Максимальное значение величины ~ 0,9965069
Период генератора ~ 2,3 -106
Наименьшая частота величины ~1
Наибольшая частота величины ~ 200
Частотный побитовый тест, абсолютное отклонение ~ 9,897 -10"7
относительное отклонение (%) ~ 1,977 -105
Частотный блочный тест (5 блоков), максимальное абсолютное отклонение ~ 4,997 -10~6
максимальное относительное отклонение (%) ~ 9,9 -10"4
Тест на последовательность одинаковых битов, макси- ~ 9
мальная длина
средняя длина ~ 2,0161249
минимальная длина 1
Распределение величин по 10 квантилям (%) 9,6;10,4;9,6; 10,4;10;10; 10;10;10;10
Отклонение от среднего абсолютное 6,982909 -10 4
относительное(%) ~ 0,1396582
Криптографический генератор со смещением бит в последовательности
Данный генератор является результатом успешной попытки расширения встроенного в среду Visual Studio 2010 крипто генератора и лишён его главного недостатка - «сгущения» элементов создаваемой последовательности возле середины интервала. Получение последовательности случайных чисел происходит следующим образом.
На этапе инициализации при помощи крип-то генератора создаётся последовательность битов заданной длины. Затем при получении каждого из последующих чисел с помощью второго крипто генератора создаётся последовательность случайной длины (не превышающей число бит в первоначальной последовательности), содержащая индексы последовательности предыдущего числа, биты которого будут заменены на противоположные, Полученное при этом двоичное число переводится в целое, а затем в действительное.
Основным недостатком данного генератора является время генерации, превышающее время генерации стандартного крипто генератора более чем в два раза. Однако этот недостаток компенсируется качеством создаваемой последовательности. Изменяемым параметром генератора является количество разрядов n генерируемого числа.
Гистограмма частот (рис. 4) и характеристики (табл. 5) крипто генератора со смещением представлены ниже.
16-
1412 — 10-
0,2001
0,4001
O.S001
0,8001
Рис. 4 - Крипто генератор со смещением, N = 50000, n = 64
Таблица 5 - Крипто генератор со смещением, N = 5-109, n = 64
Время генерации ~1925мс
Минимальное значение величины ~ 0,0005416
Максимальное значение величины ~ 0,999458
Период генератора >5-109
Наименьшая частота величины ~1
Наибольшая частота величины ~ 14
Частотный побитовый тест, абсолютное отклонение ~ 4,2 -10~6
относительное отклонение (%) ~ 0,00084039
Частотный блочный тест (5 блоков), максимальное абсолютное отклонение ~ 0,00020279
максимальное относительное отклонение (%) ~ 0,040559
Тест на последовательность одинаковых битов, максимальная длина ~ 26
средняя длина ~ 2,000333415
минимальная длина 1
Распределение величин по 10 квантилям (%) 9,96;10,01;10,01; 10,01;10,01;10,01; 10,01;10,01;10,01; 9,96
Отклонение от среднего абсолютное ~ 3,765 -10~5
относительное(%) ~ 0,007532
Встроенный ГСЧ среды Visual Studio 2010
Помимо встроенного крипто генератора, среда Visual Studio 2010 обладает не криптографическим генератором случайных чисел [5], основанном на субтрактивном алгоритме Дональда Е. Кнута [6]. Случайное число может быть получено из следующего соотношения: *л+1 =ta-24+*/7-55 )mod(rn). Очевидно, n > 55, а m желательно выбрать таким образом, чтобы оно было наибольшим простым числом. При инициализации генератора имеется возможность задать начальное значение «seed», либо при помощи текущего системного времени, что нежелательно ввиду малого разрешения этой величины, либо задав этот параметр вручную. При одинаковых значениях этого параметра получаемые последовательности чисел также будут совершенно идентичны. Поэтому, для определения величины этого параметра снова используется крипто генератор, описанный выше. Достоинством этого генератора является высокая скорость работы, превосходящая другие генераторы, а также высокое качество
получаемой последовательности чисел, которое уступает лишь крипто генератору со смещением бит, описанному выше. Изменяемым параметром данного генератора является количество разрядов п получаемого числа.
Гистограмма частот (рис. 5) и характеристики (табл. 6) встроенного ГСЧ среды VS 2010 представлены ниже.
Таблица 6 - Встроенный ГСЧ среды VS 2010, N = 5-109, n = 6
Время генерации ~ 591мс
Минимальное значение величины ~ 0,00012
Максимальное значение величины ~ 0,999899
Период генератора >5-109
Наименьшая частота величи- ~1
ны
Наибольшая частота величины ~ 14
Частотный побитовый тест, абсолютное отклонение ~ 1,699 -10~6
относительное отклонение (%) ~ 0,0003398
Частотный блочный тест (5 блоков) ~ 0,000275
максимальное относительное отклонение (%) ~ 0,055
Тест на последовательность одинаковых битов, макси- ~ 28
мальная длина
средняя длина ~ 1,999508
минимальная длина 1
10;10;10;
Распределение величин по 10 квантилям (%) 10;10;10; 10;10;10;10
Отклонение от среднего абсолютное ~ 1,648 -10~5
относительное(%) ~ 0,003297
16
IUI 1
- Ml |i|i
1Л-1-1-1-1-
0,2001 0,4001 0.6001 0,8001
Рис. 5 - Встроенный ГСЧ среды VS 2010, N = 50000, n = 6
На основе полученных данных можно сделать ряд выводов:
1. Смешанный и мультипликативный конгруэнтные генераторы, а также крипто генератор без модификации не имеет смысла использовать для получения достоверных значений характеристик, ввиду высокой погрешности и наличия реализованных генераторов более высокого качества. Имеет смысл использовать указанные генераторы для определения влияния качества последовательности случайных величин на динамические значения тех характеристик, аналитические формулы которых уже известны.
2. Встроенный генератор У8 2010, основанный на субтрактивном методе Кнута, имеет смысл использовать при необходимости произвести большое количество прогонок.
3. Модифицированный крипто генератор среды У8 2010 имеет смысл использовать при необходимости произвести небольшое количество прогонок с достаточно большим числом требований в системе, а также для получения динамических зна-
чений тех характеристик, аналитические формулы
которых не известны.
Литература
1. Е.Ю. Шемахин, А.П. Кирпичников, Вестник Казан. технол. ун-та, 18, 3, С. 263-268 (2015).
2. А.П. Кирпичников, Методы прикладной теории массового обслуживания. Казань, Изд-во Казанского университета, 2011. 200 с.
3. G. Marsaglia, The Marsaglia Random Number CDROM including the Diehard Battery of Tests of Randomness. National Science Foundation, 1995.
4. A Statistical Test Suite for the Validation of Random Number Generators and Pseudo Random Number Generators for Cryptographic Applications. NIST, 2010. 131p.
5. Microsoft Developer Network, Руководство по программированию на C#.
https://msdn.microsoft.com/ru-ru/library/kx37x362(v=vs.100).aspx, 2014.
6. Д. Кнут, Искусство программирования. Том 2. Москва, Издат. дом Вильямс, 2002 788 с.
© Е. Ю. Шемахин - аспирант каф. интеллектуальных систем и управления информационными ресурсами КНИТУ, [email protected]; А. П. Кирпичников - док. физ.-мат. наук, зав. каф. интеллектуальных систем и управления информационными ресурсами КНИТУ, [email protected].
© E. U. Shemakhin - graduate student of the Department of Intelligent Systems & Information Systems Control, KNRTU, [email protected]; А. P. Kirpichnikov - Dr. Sci., Head of the Department of Intelligent Systems & Information Systems Control, KNRTU, [email protected].