Научная статья на тему 'Моделирование многоканальной открытой системы массового обслуживания с ограничениями в среде Visual Studio 2010. Часть 2. ГСЧ'

Моделирование многоканальной открытой системы массового обслуживания с ограничениями в среде Visual Studio 2010. Часть 2. ГСЧ Текст научной статьи по специальности «Математика»

CC BY
102
12
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
СИСТЕМА МАССОВОГО ОБСЛУЖИВАНИЯ / QUEUING SYSTEM / ХАРАКТЕРИСТИКИ СИСТЕМЫ / CHARACTERISTICS OF THE SYSTEM / МОДЕЛИРОВАНИЕ / MODELING / ГЕНЕРАЦИЯ СЛУЧАЙНЫХ ЧИСЕЛ / GENERATION OF RANDOM NUMBERS / ТЕСТИРОВАНИЕ ПСЕВДОСЛУЧАЙНОЙ ПОСЛЕДОВАТЕЛЬНОСТИ / RANDOMNESS TESTS

Аннотация научной статьи по математике, автор научной работы — Шемахин Е. Ю., Кирпичников А. П.

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

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

Текст научной работы на тему «Моделирование многоканальной открытой системы массового обслуживания с ограничениями в среде Visual Studio 2010. Часть 2. ГСЧ»

УДК 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

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

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].

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