лабы / гпсч
.docxГенератор псевдослучайных чисел (ГПСЧ) — алгоритм, порождающий последовательность чисел, элементы которой почти независимы друг от друга и подчиняются заданному распределению (обычно дискретному равномерному).
Некоторые популярные генераторы псевдослучайных чисел:
линейные и нелинейные конгруэнтные генераторы;
генераторы, основанные на регистрах сдвига с линейной обратной связью;
генераторы, создаваемые с помощью нечёткой логики;
аддитивные генераторы с запаздываниями на основе последовательностей, составленных из чисел Фибоначчи;
«вихрь Мерсенна» — высокопроизводительный генератор, который использует свойства простых чисел.
В алгоритмах генерации псевдослучайных чисел принято использовать случайное начальное значение — seed («зерно»), от которого по специальной формуле начинает вычисляться вся последовательность.
В данном случае будет рассмотрено два примера ГПСЧ.
FNaF
ИИ почти во всех играх основан на шансе передвижения и уровне интеллекта. Шанс передвижения означает, что каждые несколько секунд, при чем частота индивидуальна для каждого аниматроника, чтобы они не двигались синхронно. В этом случае сравниваются два числа: рандомное число от 1 до 20 и уровень интеллекта. Если уровень интеллекта равен или больше выпавшего числа, то враг сменит свое положение.
Каждый аниматроник через разное количество секунд получает возможность сделать ход по маршруту при условии, что случайно выпавшее число в районе от 1 до 20 будет меньше или равно числу ИИ на ночь. Таким образом, чем больше ИИ, тем больше ходов может сделать персонаж и тем меньше шансов он упустит. По временному промежутку между выпадением шансов можно определить активность аниматроников:
Фредди (3,25 сек.)→Бонни (4,97 сек.)→Чика (4,98 сек.)→Фокси (5,1 сек.)
Когда вы проверяете камеру, Фокси автоматически отключает все свои возможности передвижения. Однако Фокси не сразу возвращается к работе, как только вы закрываете монитор. Игра выберет любой кадр в промежутке от 0,5 до 10,5 секунд после того, как вы закроете камеры, чтобы повторно активировать Фокси.
Фредди — это нечто. Когда Фредди получает возможность двигаться, он начинает своего рода обратный отсчёт. Обратный отсчёт длится 1000 (фреймов) — 100x (фреймов), где x — текущий уровень ИИ Фредди. (При расчётах я заметил, что если у Фредди уровень ИИ 10 или выше, он начинает и заканчивает обратный отсчёт на 0 и сразу же начинает двигаться. Очевидно, что Фредди не был создан для честной борьбы с высоким уровнем интеллекта.)
Minecraft
Контент должен быть достаточно разнообразным, чтобы выглядеть свежим, но не настолько разнообразным, чтобы казаться атипичным. И необходимо создавать миры, на которые не просто интересно смотреть, но которые обеспечивают справедливую с точки зрения игрока сложность. Процедурная генерация контента определённо не для слабых духом. Однако какими бы ни были ваши алгоритмы, все они зависят лишь от одного аспекта: случайности. И Minecraft в этом не исключение: каждый мир начинается с порождающего значения (seed); по сути, это число, используемое для инициализации генерации рельефа и всего, что на нём будет находиться. Пусть эти алгоритмы и случайны, однако они детерминированы. Это значит, что при наличии одинаковых исходных условий (одинакового seed) они всегда дают одинаковые результаты. И именно благодаря этому каждый мир Minecraft можно воссоздать по его seed. А поскольку сами seed хранятся как 64-битные числа, то существует 18,4 квинтиллиона уникальных значений, которые можно создать.
Чтобы реализовать мечту о безграничном мире Minecraft, потребовалось девять месяцев. И реализована она была при помощи очень простого трюка: каждый раз, когда игрок забирался слишком далеко, создавался новый «фрагмент» мира. Благодаря этому каждый мир был ограничен ПО: например, на 32-битной системе это примерно расстояние в 4,3 миллиарда блоков от точки создания игрока. Но постойте, прежде чем вы начнёте паковать рюкзак, знайте, что на самом деле так далеко забраться невозможно! Игроки ограничены площадью 60 000 000 на 60 000 000 блоков. По сравнению с бесконечностью кажется, что это не очень много. Однако это всё равно в семь раз больше, чем поверхность Земли. Примерно в половину размера Нептуна!
https://habr.com/ru/articles/673268/
