Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

Генерация псевдослучайных чисел

Случайные и псевдослучайные числа

Определение 1

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

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

Замечание 1

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

В алгоритмах генерации псевдослучайных чисел принято использовать некое случайное начальное значение – seed («зерно»), от которого по специальной формуле начинает вычисляться вся последовательность, в то время как для создания последовательности истинно случайных чисел такое «зерно» (то есть входные данные алгоритма) каждый раз заново производится с помощью аппаратных генераторов или программно-аппаратными средствами, такими как различные устройства компьютера. Например, в качестве источников при создании случайной последовательности чисел можно использовать шумы центрального процессора, различные движения компьютерной мыши, интервалы по времени между нажатиями клавиш и, в особенности, системное время. Но скорость получения таких последовательностей обычно бывает медленной, тем более при генерации достаточно больших по объёму последовательностей.

«Генерация псевдослучайных чисел» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Найди решение своей задачи среди 1 000 000 ответов
Найти

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

Особенности генераторов псевдослучайных чисел

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

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

Замечание 2

Поэтому, чтобы эффективно применять в различных практических задачах псевдослучайные числа, необходимо использовать такой алгоритм, при котором период повторяемости будет достаточно большим.

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

Таблица. Автор24 — интернет-биржа студенческих работ

Рисунок 1. Таблица. Автор24 — интернет-биржа студенческих работ

Любой генератор псевдослучайных чисел включает в себя следующие структурные компоненты:

  1. Источник энтропии – то, что привносит в алгоритм элемент непредсказуемости и неопределённости, то есть это источник хаоса и беспорядочности.
  2. Блок для хранения внутреннего состояния генератора.
  3. Блок для создания очередного произвольного значения.
  4. Блок, осуществляющий переход алгоритма на следующий шаг.

Далее перечислены основные признаки, по которым можно классифицировать генераторы псевдослучайных чисел:

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

Более подробно всевозможные виды генераторов псевдослучайных последовательностей представлены на следующем рисунке:

Виды генераторов псевдослучайных последовательностей. Автор24 — интернет-биржа студенческих работ

Рисунок 2. Виды генераторов псевдослучайных последовательностей. Автор24 — интернет-биржа студенческих работ

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

Классификация генераторов псевдослучайных чисел

В настоящее время существует огромное разнообразие генераторов псевдослучайных чисел, среди которых наиболее популярными являются:

  • линейные и нелинейные конгруэнтные генераторы;
  • генераторы, основанные на регистрах сдвига с линейной обратной связью;
  • генераторы, создаваемые с помощью нечёткой логики;
  • аддитивные генераторы с запаздываниями на основе последовательностей, составленных из чисел Фибоначчи;
  • «вихрь Мерсенна» – высокопроизводительный генератор, который использует свойства простых чисел.
Воспользуйся нейросетью от Автор24
Не понимаешь, как писать работу?
Попробовать ИИ
Дата написания статьи: 16.08.2021
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot