ФГОБУ ВПО "СибГУТИ" Кафедра вычислительных систем Случайные числа Преподаватель: Доцент Кафедры ВС, к.т.н. Поляков Артем Юрьевич © Кафедра вычислительных.

Презентация:



Advertisements
Похожие презентации
ФГОБУ ВПО "СибГУТИ" Кафедра вычислительных систем Случайные числа и генерация тестовых данных Преподаватель: Доцент Кафедры ВС, к.т.н. Поляков Артем Юрьевич.
Advertisements

ФГОБУ ВПО "СибГУТИ" Кафедра вычислительных систем Случайные числа и генерация тестовых данных Преподаватель: Доцент Кафедры ВС, к.т.н. Поляков Артем Юрьевич.
ФГОБУ ВПО "СибГУТИ" Кафедра вычислительных систем Подготовка входных данных Преподаватель: Доцент Кафедры ВС, к.т.н. Поляков Артем Юрьевич © Кафедра вычислительных.
Преподаватель: Доцент Кафедры ВС, к.т.н. Поляков Артем Юрьевич © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» ФГОБУ ВПО "СибГУТИ" Кафедра вычислительных.
6 ноября 2012 г.6 ноября 2012 г.6 ноября 2012 г.6 ноября 2012 г. Лекция 5. Сравнение двух выборок 5-1. Зависимые и независимые выборки 5-2.Гипотеза о равенстве.
Проверка статистических гипотез Основные понятия и терминология Что такое статистическая гипотеза? Лекция 6.
ОСНОВЫ ПРОГРАММИРОВАНИЯ Раздел 2. Математические основы программирования Логические алгоритмы Старший преподаватель Кафедры ВС, к.т.н. Поляков Артем Юрьевич.
ФГОБУ ВПО "СибГУТИ" Кафедра вычислительных систем Алгоритмы поиска Преподаватель: Доцент Кафедры ВС, к.т.н. Поляков Артем Юрьевич © Кафедра вычислительных.
ФГОБУ ВПО "СибГУТИ" Кафедра вычислительных систем Алгоритмы поиска данных Преподаватель: Доцент Кафедры ВС, к.т.н. Поляков Артем Юрьевич © Кафедра вычислительных.
Имитационное моделирование в исследовании и разработке информационных систем Лекция 5 Элементы теории вероятностей и математической статистики в имитационном.
Автор: учитель информатики МКОУ Плесской средней общеобразовательной школы Юдин Андрей Борисович Часть 1.
Массивы Материалы к урокам по программированию. МАССИВ это УПОРЯДОЧЕННАЯ последовательность данных ОДНОГО ТИПА. Массивы относятся к структурированным.
Практическое занятие ОПЕРАЦИИ (сравнение) Преподаватель: Доцент Кафедры ВС, к.т.н. Поляков Артем Юрьевич © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ»
5 ноября 2012 г.5 ноября 2012 г.5 ноября 2012 г.5 ноября 2012 г. Лекция 6. Сравнение двух выборок 6-1. Гипотеза о равенстве средних. Парные выборки 6-2.Доверительный.
МАТЕМАТИЧЕСКАЯ СТАТИСТИКА Предмет и методы Лекция 2.
Потоки платежей, ренты. 2 Основные определения Потоком платежей будем называть последовательность (ряд) выплат и поступлений, приуроченных к разным моментам.
Теория статистики Корреляционно-регрессионный анализ: статистическое моделирование зависимостей Часть 1. 1.
Лекция 7 Постникова Ольга Алексеевна1 Тема. Элементы теории корреляции
ЕГЭ информатика Алгоритмизация и программирование Консультация 4.
С ТАТИСТИЧЕСКИЕ МЕТОДЫ ОБУЧЕНИЯ РАСПОЗНАВАНИЮ ОБРАЗОВ Студент гр Хиндикайнен А.С.
Транксрипт:

ФГОБУ ВПО "СибГУТИ" Кафедра вычислительных систем Случайные числа Преподаватель: Доцент Кафедры ВС, к.т.н. Поляков Артем Юрьевич © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» ФГОБУ ВПО "СибГУТИ" Кафедра вычислительных систем ОСНОВЫ ПРОГРАММИРОВАНИЯ

План лекции © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 2 Случайные числа и их применение в вычислительной технике. Подходы к генерации случайных чисел. Псевдослучайные числа и алгоритмы их формирования. Статистическая проверка случайной природы чисел.

Применение случайных чисел © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 3 Компьютерное моделирование Азартные игры и лотереи. Криптография Компьютерные игры

Генерация случайных чисел 4 1. Ранние способы генерации случайных чисел. Их большим недостатком является крайне низкая скорость генерации. 2. Более эффективными являются физические генераторы случайных чисел, которые используют природные шумы. Random.org © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» HotBits

Генерация случайных чисел (2) 5 3. Генерация псевдослучайных чисел (ГПCЧ). Генератор псевдослучайных чисел, англ. Pseudo-random number generator (PRNG), это алгоритм, позволяющий генерировать длинные последовательности чисел, свойства которых близки к свойствам случайных чисел. Однако такие последовательности имеют период (повторяются с каким-то расстоянием). © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» seed значение for i 0 to n do rnd[i] = (seed / 1000) % ; seed = rnd[i] 2 ; Middle-square method 4. Генерация согласно заданному распределению вероятностей. Такие методы в основном используют числа с равномерным распределением и известную функцию плотности некоторого распределения (например нормального). В зависимости от источника равномерного распределения результат будет либо псевдослучайным либо случайным.

Линейный конгруэнтный генератор 6 Генератор псевдослучайных чисел, англ. Pseudo-random number generator (PRNG), это алгоритм, позволяющий генерировать длинные последовательности чисел, свойства которых близки к свойствам случайных чисел. Однако такие последовательности имеют период (повторяются с каким-то расстоянием). Конкретная последовательность чисел обычно определяется "зерном" из которого "прорастает" вся остальная последовательность. Алгоритм PRNG для одинакового значения зерна будет всегда порождать одинаковую последовательность. Наиболее простым вариантом PRNG является линейный конгруэнтный генератор (Linear Congruential Generator – LCG), который описывается следующим рекуррентным соотношением: x 0 = seed x n+1 = (ax n + b) mod m Период такого генератора (длина неповторяющейся последовательности) не превышает m. © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ»

Линейный конгруэнтный генератор (2) 7 Наиболее простым вариантом PRNG является линейный конгруэнтный генератор (linear congruential generator – LCG), который описывается следующим рекуррентным соотношением: x 0 = seed x n+1 = (ax n + b) mod m © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» Sourcema c Биты x n, формирующие случайноге число Borland C/C rand(): lrand(): glibc (GCC) m = Borland Delphi, Virtual Pascal m, m > 0 – модуль (modulus); a, m > a > 0 – мультипликатор (multiplier); c, m > c 0 – инкремент (increment) x 0 – случайное зерно.

Период ГПCЧ (PRNG) © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 8 Никакой детерминированный алгоритм не может генерировать полностью случайные числа, он может только аппроксимировать некоторые их свойства. Джон фон Нейман: « … всякий, кто питает слабость к арифметическим методам получения случайных чисел, грешен вне всяких сомнений … ». Любой ГПСЧ с ограниченными ресурсами рано или поздно зацикливается начинает повторять одну и ту же последовательность чисел. Длина циклов ГПСЧ зависит от самого генератора и часто составляет около 2 n / 2, где n размер внутреннего состояния в битах. Линейные конгруэнтные и LFSR- генераторы (Регистр сдвига с линейной обратной связью (РСЛОС, англ. Linear feedback shift register) обладают максимальными циклами порядка 2 n.

Период ГПCЧ (PRNG) (2) © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 9 Большинство простых арифметических генераторов хотя и обладают большой скоростью, но страдают от многих серьёзных недостатков: Слишком короткий период/периоды. Последовательные значения не являются независимыми. Некоторые биты «менее случайны», чем другие. Неравномерное одномерное распределение. Обратимость.

С11. Pseudo-random sequence generation functions © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 10 В стандарте языка Си (ISO/IEC 9899:2011, сокр. С11) предусмотрены следующие функций генерации псевдослучайных чисел: #include int rand(void); void srand(unsigned int seed); …The rand function computes a sequence of pseudo-random integers in the range 0 to RAND_MAX … The value of the RAND_MAX macro shall be at least 32767… … The srand function uses the argument as a seed for a new sequence of pseudo-random numbers to be returned by subsequent calls to rand. If srand is then called with the same seed value, the sequence of pseudo-random numbers shall be repeated. If rand is called before any calls to srand have been made, the same sequence shall be generated as when srand is rst called with a seed value of 1. GLibC: RAND_MAX = C11

С11. Pseudo-random sequence generation functions (2) © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 11 … EXAMPLE The following functions dene a portable implementation of rand and srand. static unsigned long int next = 1; int rand(void) // RAND_MAX assumed to be { next = next * ; return (unsigned int)(next/65536) % 32768; } void srand(unsigned int seed) { next = seed; } В стандарте также приведен пример линейного конгруэнтного генератора, который может быть использован для генерации случайных чисел. C11

GNU LibC © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 12 В реализации GNU LibC (GLibC) стандарта Си предлагается более широкий выбор функций генерации случайных чисел: ISO Random: PRNG, предусмотренный в С11 BSD Random: функции, заимствованные из BSD (Berkley Software Distribution). В настоящее время BSD называют семейство Unix- подобных операционных систем. SVID Random: функции, стандартизированные в системах SVID (System V Interface Definition) компании AT&T.

BSD random © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 13 // Выбор и инициализация начального состояния генератора char *initstate(unsigned int seed, char *state, size_t n); // Установка начального состояния генератора char *setstate(char *state); В BSD системах предусмотрен более сложный и гибкий генератор случайных чисел, который можно настраивать. Помимо линейного конгруэнтного генератора, аналогичного предложенному в стандарте языка СИ доступно еще 4 алгоритма генерации псевдослучайных чисел. Кроме стандартных функций, аналогичных функциям стандарта: BSD функцияАналог С11 long int random(void);int rand(void); void srandom(unsigned int seed);void srand(unsigned int seed); Доступны две дополнительные функции, которые позволяют выбирать тип используемого PRNG:

GNU C Library (2) © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 14 glibc-2.18/stdlib/random_r.c /* Linear congruential. */ #define>TYPE_00 #define>BREAK_08 #define>DEG_00 #define>SEP_00 /* x[7] + x[3] + 1. */ #define>TYPE_11 #define>BREAK_132 #define>DEG_17 #define>SEP_13 /* x[15] + x + 1. */ #define>TYPE_22 #define>BREAK_264 #define>DEG_215 #define>SEP_21 /* x[31] + x[3] + 1. */ #define>TYPE_33 #define>BREAK_3128 #define>DEG_331 #define>SEP_33 /* x[63] + x + 1. */ #define>TYPE_44 #define>BREAK_4256 #define>DEG_463 #define>SEP_41 По умолчанию

Выбор ГПCЧ(PRNG) в GLibC © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 15 int __initstate_r (unsigned int seed, char *arg_state, size_t n, struct random_data *buf) { if (buf == NULL) goto fail; … int type; if (n >= BREAK_3) type = n < BREAK_4 ? TYPE_3 : TYPE_4; else if (n < BREAK_1) { if (n < BREAK_0) goto fail; type = TYPE_0; } else type = n < BREAK_2 ? TYPE_1 : TYPE_2; /* Linear congruential. */ #define>TYPE_00 #define>BREAK_08 #define>DEG_00 #define>SEP_00 /* x 7 + x */ #define>TYPE_11 #define>BREAK_132 #define>DEG_17 #define>SEP_13 /* x 15 + x + 1. */ #define>TYPE_22 #define>BREAK_264 #define>DEG_215 #define>SEP_21 glibc-2.18/stdlib/random_r.c

GNU C Library (glibc) © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 16 glibc-2.18/stdlib/random_r.c int __random_r (struct random_data *buf, int32_t *result) {... if (buf->rand_type == TYPE_0) { int32_t val = state[0]; val = ((state[0] * ) ) & 0x7fffffff; state[0] = val; *result = val; }... Sourcema c Биты x n, формирующие случайноге число glibc (GCC) (m = 0x7FFFFFFF)

Алгоритм GLibC PRNG, TYPE0 © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 17 #include int main() { int rval, i; int tmp[8]; // BREAK0 = 8 8 < BREAK1 = 32 initstate(1,(char*)tmp, 8); for(i=0;i

Алгоритм вычисления периода PRNG © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 18 input n for i 1 to n do rnd[i] = rand() // запомнить первые n псевдослучайных чисел found false // Флаг – признак обнаружения rnd i 1 // Проверяемый элемент rnd count n // Количество сгенерированных чисел while ( не found ) do if rnd[i] = rand() then // rnd[i] совпал, далее проверяем rnd[i+1] i i + 1 if i = n then // если совпали все n элементов - выход found true; else // если очередной элемент не совпал – проверяем сначала i 1; count count + 1 output count

Период GLibC ГПCЧ(PRNG), TYPE0 © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 19 Sourcema c Биты x n, формирующие случайноге число glibc (GCC) Экспериментально полученное значение периода линейного конгруэнтного ГПCЧ, вычисленное согласно приведенному алгоритму, составляет Это означает, что последовательности чисел с номерами 1 – , – , – будут совпадать. Период такого генератора составляет примерно Такой период слишком мал, поэтому применение ГПCЧ типа 0 на практике не желательно.

Алгоритм GLibC PRNG, TYPE1 © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 20 #include #define MAX 1000 #define seed 1 main() { int r[MAX], i, start = 0, tmp[32]; initstate(1,(char*)tmp,32); r[0] = seed; for (i=1; i 1, r1); } #define TYPE1 #define BREAK32 #define DEG7 #define SEP3

Период GLibC ГПCЧ(PRNG), TYPE1 © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 21 Количество совпавших элементов Расстояние между совпадениями – n = Таким образом, период ГПCЧ типа 1 в ( / ) = 126 раз превышает период ГПCЧ типа 0. ГПCЧ типа 1 – 4 относятся к Аддитивным ГПCЧ и характеризуются существенно большим периодом по сравнению с линейным.

Принцип работы аддитивного ГПCЧ © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» #define TYPE1 #define BREAK32 #define DEG7 #define SEP3 DEGSEP Начальное заполнение массива производится при помощи линейного конгруэнтного генератора r[0] = seed; for (i=1; i

Принцип работы аддитивного ГПCЧ © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» #define TYPE1 #define BREAK32 #define DEG7 #define SEP3 DEGSEP Часть (SEP) элементов дублируется start = i; for (i=start; i < start + SEP; i++) { r[i] = r[i-DEG]; }

Принцип работы аддитивного ГПCЧ (2) © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» #define TYPE1 #define BREAK32 #define DEG7 #define SEP3 DEGSEP start = i; for (i=start; i < start + DEG*10; i++) { r[i] = r[i-DEG] + r[i-SEP]; } 3. Первые k чисел обычно отбрасываются. В GLibC отбрасываются 10*DEG чисел.

Тестирование ГПСЧ © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 25 Случайность – это вероятностная характеристика, поэтому свойства случайной последовательности могут быть описаны с применением вероятностей. Существует два подхода к тестированию ГПСЧ: 1. Статистический тест основывается на том, что вероятностные характеристики идеального генератора случайных чисел известны априори. Поэтому имея набор последовательней псевдослучайных случайных чисел, сгенерированных тестируемым ГПСЧ, можно вычислить их вероятностные характеристики и сравнить с идеальными. 2. Физический тест предполагает применение исследуемого генератора в реальных программах. Например, моделирование методом Монте-Карло физических явлений, результат которого заранее известен.

Статистические тесты © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 26 Статистический тест предполагает наличие известного признака, которое отличает случайные числа от остальных. Примером такого предположения может быть "В случайном битовом потоке количество нулей совпадает с количеством единиц". Математически такой признак оформляется в виде статистики – функции f (x) от последовательности x, которая проверяется на случайность. Например: Исходя из предположения, что x – случайное число, распределенное по равномерному закону, делается заключение о том, каким должно быть распределение f (x) и выбирается критическое значение t. В рассматриваемом примере величина f (x)/ n должна иметь нормальное распределение. Это известный научный факт, который был доказан и, следовательно, может использоваться для проверки.

Статистические тесты (2) © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 27 Тест заключается в проверке гипотезы H0 – последовательность случайна. Обратная гипотеза Ha заключается в том, что последовательность не случайна. Результаты работы теста могут быть разделены на 4 класса: Истинное заключение Заключение теста Принять H0 Принять Ha (отклонить H0) Последовательность случайна (H0 истинна) Нет ошибкиОшибка первого рода Последовательность не случайна (Ha истинна) Ошибка второго родаНет ошибки Вероятность α ошибки первого рода (уровень значимости теста) задается перед проведением тестирования. В тестах NIST α = Вероятность β ошибки второго рода зависит от многих факторов, при этом количество n бит в потоке и вероятности α и β связаны. Если известно две из трех величин, третья может быть найдена.

Статистические тесты (3) © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 28 Каждый тест предполагает вычисление статистики f (ε) для некоторой проверяемой последовательности ε. и сравнивается с критической величиной t. Вероятность ошибки первого рода: P{ f (ε) > t | H0 – ложь }. Вероятность ошибки второго рода: P{ f (ε) t | H0 – истина}. Статистика f (ε) используется для вычисления P-value, которое определяет силу доказательств гипотезы H0. P-value = 1 означает, что последовательность совпадает с идеальной случайной последовательностью. P-value = 0 означает, что последовательность абсолютно неслучайна. В остальных случаях, для того, чтобы решить, является последовательность случайной или нет, используется уровень α значимости. Если P-value α, то гипотеза H0 принимается, иначе – отклоняется. Обычно α выбирается в диапазоне [0.001, 0.01].

Тесты NIST © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 29 NIST – National Institute of Standards and Technology – Национальный институт стандартов и технологий разработал набор инструментов для тестирования ГПСЧ для криптографических программ, состоящий из 15 тестов. Набор тестов включает: 1. Частотный побитовый тест 2. Частотный блочный тест 3. Тест на последовательность одинаковых битов 4. Тест на самую длинную последовательность единиц в блоке 5. Тест рангов бинарных матриц (линейная независимость) 6. Спектральный тест 7. Тест на совпадение неперекрывающихся шаблонов 8. Тест на совпадение перекрывающихся шаблонов 9. Универсальный статистический тест Маурера 10. Тест на линейную сложность 11. Тест на периодичность

Тесты NIST (2) © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 30 NIST – National Institute of Standards and Technology – Национальный институт стандартов и технологий разработал набор инструментов для тестирования ГПСЧ для криптографических программ, состоящий из 15 тестов. Набор тестов включает: 12. Тест приблизительной энтропии 13. Тест кумулятивных сумм 14. Тест на произвольные отклонения 15. Другой тест на произвольные отклонения

Тесты NIST (3) © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 31 NIST – National Institute of Standards and Technology – Национальный институт стандартов и технологий разработал набор инструментов для тестирования ГПСЧ для криптографических программ, состоящий из 15 тестов. Все тесты анализируют битовый поток: Случайные числа формируются из такого потока путем разбиения его на блоки по m бит. Например, при m = 6 получается следующий набор случайных чисел:

NIST. Частотный побитовый тест © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 32 Суть теста заключается в проверке того, что в битовом потоке с равномерным распределением количество 1-ц совпадает с количеством 0-й. Если случайные числа распределены по равномерному закону, то каждый бит потока является независимой случайной величиной, распределенной по закону Бернулли, который описывает подбрасывание монеты. Вероятность возникновения 0 и 1 (орел и решка) – 0,5. Пусть дан битовый поток ε = ε 1, ε 2, ε 3, …, ε n-1, ε n, где ε i – i-й бит потока. При проведении теста вычисляется сумма Если ε i = 0, то X i = -1, а если ε i = 1, то X i = 1. Таким образом при полном совпадении количества нулей и единиц S = 0. Далее вычисляется значение функции: Если P_value > α, то тест успешно пройден. man efrc функция в glibc man efrc функция в glibc

NIST. Частотный побитовый тест © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 33 Например: ε = , n=10. Тогда S n = 1 + (-1) (-1) (-1) (-1) + 1 = 2. На основании полученного P-value можно заключить, что последовательность является случайной.

NIST. Частотный блочный тест © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 34 Суть теста заключается в определении доли 1-ц в блоке, состоящем из M бит и сравнении его с ожидаемым значением M/2. При M = 1 этот тест аналогичен предыдущему частотному. Далее приведен алгоритм теста. 1. Битовый поток разбивается на N блоков по M бит каждый, остаток отбрасывается. Например, при M = 6: Далее для каждого блока j = 1, 2, …, N вычисляется доля π j 1-ц в нем: 3. Вычисляется статистика χ 2 по формуле:

NIST. Частотный блочный тест (2) © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» Далее для каждого блока j = 1, 2, …, N вычисляется доля π j 1-ц в нем: 3. Вычисляется статистика χ 2 по формуле: 4. После этого вычисляется P_value по формуле: 5. Если значение P_value > α, то числа не случайные. Программный модуль cephes.c, содержащий реализацию функции igamc и пример его использования размещены на сайте

NIST. Частотный блочный тест (2) © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 36 Например: n = 10, M = 3, ε = , N = 3. Тогда будет создано три блока: 011, 001 and 101, при этом последний разряд ε будет отброшен. π 1 = 2/3, π 2 = 1/3, π 3 = 2/3. χ 2 (obs) = 43( (2/3 – 1/2) 2 + (1/3 – 1/2) 2 + (2/3 – 1/2) 2 ) = 1. P-value = igamc(N/2, χ 2 (obs)/2) = igamc(3/2, 1/2) = 0, > На основании полученного P-value можно заключить, что последовательность является случайной.

NIST. Тест на последовательность одинаковых битов © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 37 Суть теста заключается в анализе количества серий бит, состоящих из одинаковых значений (например, единиц). Например в битовом потоке: Количество серий из 1-ц составляет 18. Целью теста является сопоставить фактически наблюдаемое количество серий с теоретической оценкой. Он показывает является ли колебание между разными значениями бит слишком быстрым или слишком медленным. 1. Перед проведением теста необходимо определить долю 1-ц в битовом потоке. Это достигается путем вычисления суммы бит и проверки соотношения: Если соотношение не выполняется, проводить тест не имеет смысла и уже на данном этапе можно констатировать его провал.

NIST. Тест на последовательность одинаковых битов (2) © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» Вычисляется количество серий, состоящих из одинаковых значений бит: 3. Вычислить P-value: 4. Если значение P_value > α, то числа не случайные.

NIST. Тест на последовательность одинаковых битов (3) © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 39 Например: n = 10, ε = , then n=10 and π = 6/10 = 3/5. |π - 1/2| = | 3/5 – 1/2 | = 0.1 < τ = 0,63246 ε = => V 10 = ( )+1=7. На основании полученного P-value можно заключить, что последовательность является случайной.

Литература © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 40 1.Макконнелл, Дж. Основы современных алгоритмов (Analysis of Algorithms: An Active Learning Approach) – М.: Техносфера, – 368с. – ISBN , NIST cryptographic toolkit SPRNG Links