Способы генерации случайных чисел

Способы генерации случайных чисел

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

Многие вещи можно сделать и без генератора случайных чисел. Вот например, такая последовательность чисел не может считаться случайной: <0, 1, 2, 3, 4, 5, 6, 7>. Здесь, зная предыдущее число, очень легко угадать следующее. Существуют другие последовательности. Например: <0, 1, 3, 2, 6, 7, 5, 4>. Здесь, угадать следующее число значительно сложнее. Подобные последовательности иногда удобно использовать в программах.

Генераторы случайных чисел по способу получения чисел делятся на:

Существует 3 способа генерации случайных чисел:

1. Аппаратный. (простой пример это монетка)

При аппаратном способе случайные числа вырабатываются электронной приставкой (генератор, датчик случайных чисел). В основе таких генераторов лежат шумы в электронных и полупроводниковых приборах и тому подобное.

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

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

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

3. Алгоритмический (программный). Случайные числа генерируются на компьютере по специальным алгоритмам. Числа, генерируемые с помощью этих ГСЧ, всегда являются псевдослучайными (или квазислучайными), то есть каждое последующее сгенерированное число зависит от предыдущего Случайные числа генерируются по алгоритмам, реализуемым в виде программ. Плюсы: возможность многократного воспроизведения последовательности, не требуются специальные устройства. Минусы: погрешность в моделировании непрерывных распределений случайных чисел, периодичность последовательности случайных чисел, возникающая в силу их алгоритмической природы, сравнительно большие затраты вычислительных ресурсов. Этот способ наиболее распространен.

Требования к идеальному генератору случайных чисел:

1. Генерируемые числа имеют квазиравномерную распределимость (квази=почти).

2. Числа в последовательности статически независимы

3. Последовательность воспроизводима

4. Алгоритм функционирует при минимальных затратах вычислительных ресурсов

5. Эксперимент с использованием имитационной модели системы, интерпретация и реализация результатов.

Имитационное моделирование — это метод исследования, при котором изучаемая система заменяется моделью, с достаточной точностью, описывающей реальную систему, с которой проводятся эксперименты с целью получения информации об этой системе.

Читайте также:  Почему batman arkham city вылетает

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

Экспериментирование – процесс осуществления имитации с целью получения желаемых данных и анализа чувствительности.

Интерпретация – построение выводов по данным, полученным путем имитации.

Реализация – практическое использование модели и результатов моделирования.

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

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

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

Чтобы иметь максимальные шансы успешного применения результатов имитационного исследования, имитационная модель должна быть:

— способной давать разумные ответы;

— способной давать информацию, которая может быть в дальнейшем

— реалистичной в требованиях к данным;

— способной отвечать на вопросы типа «А что будет, если…?»;

— недорогой при применении.

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

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого.

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

Читайте также:  Ручной пылесос kitfort кт 526 3 отзывы

Рубрика: Информационные технологии

Дата публикации: 24.02.2017 2017-02-24

Статья просмотрена: 4066 раз

Библиографическое описание:

Гончарук В. С., Атаманов Ю. С., Гордеев С. Н. Методы генерации случайных чисел // Молодой ученый. — 2017. — №8. — С. 20-23. — URL https://moluch.ru/archive/142/40025/ (дата обращения: 15.03.2020).

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

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

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

Все генераторы случайных чисел делятся на два вида:

‒ True random number generator (ГНСЧ, генератор настоящих случайных чисел)

‒ Pseudo random number generator (ГПСЧ, генератор псевдослучайных чисел)

Эти два генератора задания случайной последовательности отличаются способом получения случайного числа.

ГНСЧ использует в качестве механизма получения случайного числа некий физический процесс, который сам по себе является непредсказуемым. Если оцифровать такой процесс (например, шумы атмосферы), то можно использовать его для генератора случайных чисел. ГПСЧ в свою очередь использует математические алгоритмы (полностью производимые компьютером) [2].

Рассмотрим сравнительную таблицу 1, которая показывает отличия между ГНСЧ и ГПСЧ.

Отличия ГНСЧ иГПСЧ

ГНСЧ

ГПСЧ

2) Равномерное распределение

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

Читайте также:  Хранение информации в современном мире

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

В линейном конгруэнтным методе случайное число вычисляется по следующей рекуррентной формуле: , где — модуль (), — множитель (), — приращение (), — начальное значение, которое также иногда называют зерном (от англ. seed) ().

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

Рис. 1. Пример работы алгоритма при , , ,

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

Теперь пусть (рис. 2).

Рис. 2. Пример работы алгоритма при , , ,

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

Теперь в качестве возьмём большое простое число, пусть (рис. 3).

Рис. 3. Пример работы алгоритма при , , ,

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

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

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

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

Пример работы виджета: http://jsfiddle.net/bEp28/

Страница с результатами сохранена и будет доступна по ссылке: в течении 3 дней. Если вам нужно сохранить результат на более длительный период, создайте личный кабинет на сайте. Стоимость личного кабинета — 300 рублей.

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

Если вам не требуется функционал личного кабинета, то вы можете навсегда сохранить результат только этой генерации. Стоимость сохранения результата — 30 рублей.

Ссылка на основную публикацию
Снять пароль с роутера tp link
Домашняя беспроводная сеть Wi-Fi должна быть защищена паролем. Но ведь бывают разные случаи, скажете вы. Например, вы хотите пригласить друзей...
Скопировать контакты с андроид на компьютер
Мы уже рассказывали о том, как скопировать контакты со смартфона на смартфон. Но иногда проще перебросить контактную книгу на компьютер....
Скопировать строку таблицы значений 1с в другую
Не претендуя на полноту описания функций и методов работы с таблицей значений 1с привожу некоторые аспекты, которые в своё время...
Снять пароль с макроса excel
Здравствуйте, друзья! Последние дни бился над такой задачей: Имеется файл .xls, в нем макрос на VBA, защищенный паролем. Файл создается...
Adblock detector