Cлучайные числа полезны для различных целей, таких как генерация ключей шифрования данных, моделирование сложных явлений. Для выбора случайных выборок из больших наборов данных. Они также используются эстетически, например, в литературе и музыке. И, конечно, всегда популярны для игр и азартных игр. При обсуждении отдельных чисел случайное число – это число, которое берется из набора возможных значений, каждое из которых имеет одинаковую вероятность, т. е. Равномерное распределение . При обсуждении последовательности случайных чисел каждое нарисованное число должно быть статистически независимым от других.
С появлением компьютеров программисты осознали необходимость введения случайности в компьютерную программу. Однако, как это ни удивительно, трудно заставить компьютер что-то сделать случайно. Компьютер слепо следует инструкциям и поэтому вполне предсказуем. (Компьютер, который не следует своим инструкциям таким образом, сломан.) Существует два основных подхода к генерации случайных чисел с использованием компьютера.
- Генераторы псевдослучайных чисел (ПГСЧ)
- Генераторы истинных случайных чисел (ИГСЧ)
Подходы имеют совершенно разные характеристики, и у каждого есть свои плюсы и минусы.
Генераторы псевдослучайных чисел (ПГСЧ)
Как подсказывает слово «псевдо», псевдослучайные числа не случайны, как вы могли бы ожидать. По крайней мере, если вы привыкли к броскам кубиков или лотерейным билетам. По сути, ПГСЧ- это алгоритмы, которые используют математические формулы. Или просто предварительно вычисленные таблицы для получения последовательностей чисел, которые кажутся случайными. Хорошим примером ПГСЧ является линейный конгруэнтный метод . Большое количество исследований было посвящено теории псевдослучайных чисел. И современные алгоритмы генерации псевдослучайных чисел настолько хороши, что числа выглядят точно так, как будто они действительно случайны.
Основное различие между ПГСЧ и ИГСЧ легко понять. Например если сравнить компьютерные случайные числа с бросками кубика. Поскольку ПГСЧ генерируют случайные числа с использованием математических формул или предварительно рассчитанных списков, использование одного соответствует тому, что кто-то много раз бросал кубик и записывал результаты. Всякий раз, когда вы просите бросок кубика, вы получаете следующее в списке. Фактически, числа кажутся случайными, но они действительно предопределены. Работа ИГСЧ заключается в том, чтобы заставить компьютер на самом деле бросить кубик. Или, чаще, использовать другое физическое явление, которое легче подключить к компьютеру, чем кубик.
ПГСЧ являются эффективными , они могут производить много чисел за короткое время, и детерминированными.Что означает, что данная последовательность чисел может быть воспроизведена позднее, если начальная точка в последовательности известна. Эффективность – это хорошая характеристика, если вашему приложению нужно много чисел, а детерминизм удобен, если вам нужно снова воспроизвести ту же последовательность чисел на более позднем этапе. ПГСЧ, как правило, также периодические , что означает, что последовательность в конечном итоге повторится. Хотя периодичность вряд ли когда-либо является желательной характеристикой, современный рандомайзер имеет такой длительный период, что его можно игнорировать для большинства практических целей.
Эти характеристики делают ПГСЧ подходящими для приложений, где требуется много номеров и где полезно, чтобы одна и та же последовательность могла быть легко воспроизведена. Популярные примеры таких приложений – приложения для моделирования. ПГСЧ не подходят для приложений, в которых важно, чтобы числа были действительно непредсказуемыми, таких как шифрование данных и азартные игры.
Истинные генераторы случайных чисел (ИГСЧ)
По сравнению с ПГСЧ , ИГСЧ извлекают случайность из физических явлений и вводят ее в компьютер. Вы можете представить это как матрицу, подключенную к компьютеру. Но обычно люди используют физическое явление. Которое легче подключить к компьютеру, чем матрицу. Физическое явление может быть очень простым. Например, небольшие вариации чьих-либо движений мыши или количества времени между нажатиями клавиш. На практике, однако, вы должны быть осторожны в выборе источника. Например, может быть сложно использовать нажатия клавиш таким способом. Потому что нажатия клавиш часто буферизируются операционной системой компьютера. А это означает, что несколько нажатий клавиш собираются до того, как они будут отправлены в программу, ожидающую их. Для программы, ожидающей нажатия клавиш.
Тем не менее, есть много других способов получить настоящую случайность на вашем компьютере. Действительно хорошим физическим явлением для использования является радиоактивный источник. Моменты времени, в которые происходит распад радиоактивного источника, совершенно непредсказуемы. Их можно довольно легко обнаружить и передать в компьютер. Избегая каких-либо механизмов буферизации в операционной системе. Независимо от того, какое физическое явление используется. Процесс генерирования истинных случайных чисел включает в себя выявление небольших непредсказуемых изменений в данных.