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

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

Генераторы случайных чисел

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

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

ТехноБайка: случайны ли случайные числа и как обыграть казино

В программах Arduino функция random () используется для получения псевдослучайных чисел. Параметры функции позволяют задать диапазон извлекаемых значений от минимального до максимального.

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

Автомат для игры «Орёл и Решка»

Это самый простой игровой автомат. Arduino Uno, пара светодиодов и кнопка часов. При нажатии кнопки один из светодиодов загорается случайным образом: красный или зеленый. Если вы угадаете, какой из двух огней загорится, вы можете записаться на «битву экстрасенсов».

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

Генератор случайных чисел и его применение

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

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

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

Стандартный генератор случайных чисел

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

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

Если вы хотите поэкспериментировать с дефицитом и разной степенью рандомизации, то следующие методы идеально подходят для этого

Взвешенные случайные числа и слоты редкости

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

Статья по теме:  Dying Light 2: Крафт. Dying light где найти чертежи

Почему важен вес рандомизации? В качестве примера возьмем события в игре SimCity. Если каждое событие выбирается без взвешивания, то вероятность каждого события статистически одинакова. Это означает, что у вас одинаковые шансы на то, что вам предложат открыть новое казино или землетрясение. Добавление весов придает этим событиям одинаковую вероятность и обеспечивает превосходный игровой процесс.

Виды и применения

Группировка одинаковых предметов

Во многих книгах по информационным технологиям этот метод называется ‘bagging’. Название говорит само за себя — класс или объект буквально используется для создания визуального представления сумки.

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

Этот метод рандомизации позволяет нам вычислить среднюю игру для каждого игрока, приближаясь к частоте результата. Упрощение результатов по шкале от «очень плохого» до «очень хорошего» дает гораздо более приятную систему, чем разрешение игрокам получать нежелательные результаты в ненужной последовательности (например, результат «очень плохой» 20 раз подряд).

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

Ниже приведен простой пример того, как может выглядеть псевдо-трек класса bag.

Реализация слотов редкости

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

Вместо того, чтобы определять частоту отдельных элементов в игре, создается соответствующая редкость. Например, «нормальный» дефицит может представлять собой вероятность того, что вероятность определенного исхода находится между 20 и X, «редкий» дефицит. Уровни могут представлять вероятность от 1 до x.

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

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

Ниже показан простой пример того, как добавить гнездо дефицита в мешок.

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

Какие приложения используют ГСЧ

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

  • Удачные игры: бинго, карточные игры, лотереи и подобные игры.
  • Игрушки для сбора лута: все игры, требующие от игроков сбора добычи для использования в игровом процессе, например, PubG, Diablo и Borderlands используют ГСЧ. Возможность получать лучшую добычу каждый раз – вот причина, по которой люди становятся зависимыми от них.
  • Приключенческие игры: такие игры, как Марио и Покемон Го используйте алгоритм генератора случайных чисел, чтобы определить, какие предметы будут добавлены, и каждый раз вы встречайтесь с новым претендентом на покемона.
  • Игры, созданные в процессе: все игры, в которых нет предварительно разработанных карт и уровней, но которые были разработаны в игре с использованием процедурного программирования, таких как Minecraft и Civilization. Это помогает создать всю игру с использованием алгоритма.
  • Соревновательные игры: некоторые соревновательные игры, например, Counter-Strike используйте алгоритм генератора случайных чисел, чтобы регулировать, как пули поражают цели.
Статья по теме:  Saints Row 4. Saints row 4 как играть в 3

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

Манипуляции с ГСЧ

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

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

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

Почему геймеры ненавидят ГСЧ

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

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

Кто такой RNGesus?

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

Проигравшие игроки часто винят в своем поражении плохой ГСЧ, который выгоден их оппонентам. Там, где существует зло, должен существовать Бог — RNGesus.

Среди игроков и Rngesus по всему миру появился новый термин, приближающий к удару «Иисус». Поскольку в реальном мире Иисус Христос считается нашим Спасителем, Иисус RNG — это удивительное существо, созданное для того, чтобы спасти игроков от разрушительных последствий GSC. Это нигде не доказано, но это началось как миф и теперь распространилось в игровом сообществе как огонь.

Напоследок давайте посмотрим, какой результат даёт такой аппаратный рандом. График я построил в excel, чтобы более чётко видеть рассеивание полученного случайного значения: Имеем практически равномерное рассеяние и огромное количество случайных значений, полученных путём перемножения и сложения “шума”.

Проблема святого рандома

Поскольку каждая машина (процессор) генерирует случайное число с помощью одной из случайных функций, например MT_RAND, существует предел погрешности. И в диапазоне 1-100 есть места, где числа выпадают чаще, чем должны, и где они выпадают чаще, чем должны. Это зависит только от процессора, на котором выполняется функция рандомизации. Один и тот же процессор в одном и том же режиме всегда имеет одни и те же ошибки.

Статья по теме:  Гайд: Как играть на подводных лодках. World of warships подводные лодки как получить

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

Делайте.

При «70» у нас есть идея, что есть результат джекпота. В результате в Sacred Random вероятность выпадения джекпота меньше, а вероятность выпадения джекпота чаще, чем в других результатах, что немного портит баланс. Если не сломан, то, по крайней мере, портит статистику и вообще ведет себя не так, как ожидают разработчики.

Решение: Делаем рандом более рандомным

Если ваша игра основана на управлении вероятностью и от этого зависит ваш доход — прибыльный или нет, этот вопрос важен для вас.

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

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

PHP Media не удалось минимизировать проблему. В дальнейшем для минимизации отклонений применялись различные методы.

Способ 1: Шаффл ряда значений

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

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

Способ 2: Шаффл на лету

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

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

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

Криптографически стойкий генератор псевдослучайных чисел (КСГПЧ)

Из-за недостатков ГИС и ГПСЧ криптографы разработали гибридный подход, называемый криптографически безопасным производством псевдофигур. Этот подход направлен на обеспечение скорости ГПСЧ и в то же время гарантирует безопасность ВЛИН.

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

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

Примером является / dev/random в системах Unix и Linux.

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

Завершающие мысли

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

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

Оцените статью
emugame.ru