Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Коды и шифры.DOC
Скачиваний:
62
Добавлен:
18.08.2019
Размер:
2.07 Mб
Скачать

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

Истинно случайная последовательность может быть получена только с помощью истинно случайного процесса, и поэтому, в частности, не может быть выработана с помощью никакой математической формулы, так как знание формулы и достаточного числа начальных значений (т.е. знаков, уже полученных с помощью данной формулы) позволит с уверенностью предсказать следующее значение. Однако существуют формулы, дающие достаточно длинные числовые последовательности, которые удовлетворяют многим критериям случайности, пока они не начнут повторяться; такие последовательности называются "псевдослучайными". Ниже мы расскажем о некоторых из них, но сначала рассмотрим несколько способов получения истинно случайных последовательностей.

Бросание монеты

Если много раз подбрасывать симметричную монету и каждый раз при выпадении "орла" записывать "1", а при выпадении "решетки" записывать "0", мы должны получить двоичную случайную последовательность. На практике же в ней возможны отклонения, например, из-за того, что бросание всегда производится одинаковым образом. К тому же это очень медленный способ выработки случайной последовательности, и пожалуй, его стоит использовать только если нет никакого другого способа. Говорят, что один военнопленный, чтобы чем-нибудь занять себя, произвел много тысяч бросаний монеты и проанализировал полученную последовательность с помощью ряда тестов.

Бросание костей

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

6(значение красной кости)+(значение голубой кости)-7.

Затем

(1) отвергаем полученное число, если оно превосходит 29;

иначе

(2) записываем остаток от деления полученного числа на 10.

Полученная последовательность десятичных цифр должна быть случайной.

Такие странные правила нам понадобились, так как грани костей помечены цифрами от 1 до 6, а не от 0 до 5, и так как всего возможно 36 комбинаций. Диапазон возможных значений получается, таким образом, от 0 до 35. Поэтому чтобы гарантировать равенство шансов на появление для всех цифр от 0 до 9, необходимо отбрасывать все числа, большие 29.

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

216красный+36голубой+6зеленый+белый-259,

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

У такого подхода есть множество возможных вариаций; например, пару костей можно заменить на колесо рулетки, которое имеет 37 секторов, пронумерованных от 0 до 36. Секторы с 30 по 36 необходимо игнорировать, тогда младшая цифра номера "выигравшего" сектора дает следующую случайную десятичную цифру. Это довольно расточительный способ: эффективнее в этом случае было бы игнорировать сектора с 32 по 36 и преобразовывать все остальные номера (от 0 до 31) в двоичные числа, получая, таким образом, пять двоичных знаков за один раз. Двоичные знаки в обиходе также известны как биты; именно так их часто называют. Двоичная гамма широко используется в криптографии. Ее достоинство не только в том, что операция сложения по модулю 2 очень просто устроена, и к тому же совпадает с операцией вычитания по модулю 2, что делает зашифрование и расшифрование одинаковым, но и в том, что двоичную арифметику очень просто реализовать в электронных устройствах, и поэтому она особенно хорошо подходит для шифрмашин и их компьютерных симуляторов.