на главную
об игре
Disciples 2: Dark Prophecy 24.01.2002

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

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

  • 80% попадания выстрела в игре — ну это почти гарантированное попадание;
  • 80% того, что ваш товарищ хоть когда-нибудь отдаст долг — не-не-не, так не пойдёт, это слишком большой риск;
  • 5% получения критического урона он NPC врага — маловероятно, риск можно игнорировать;
  • 1% риск падения сосульки, если пройти под крышей с капающими метровыми сосульками — ещё чего, лучше обойти с другой стороны тротуара;
  • 51% вероятность выигрыша в мини-игре в большой РПГ — можно рассчитывать на то, что после 20 ставок я чуть-чуть выиграю или, как минимум, останусь при своих… через 20 ставок… как такое могло случиться, что я проиграл половину всего своего золота? Тут явно сломан генератор случайных чисел!

В статье будут рассмотрены следующие вопросы:

  • ошибочные допущения в оценке вероятностей;
  • конкретные примеры заблуждений игроков и фактические вероятности «редких» событий;
  • генератор случайных чисел (вообще-то псевдослучайных);
  • ранние простые генераторы псевдослучайных чисел на примере Final Fantasy I;
  • подходы к реализации случайных событий с воспроизводимостью и без;
  • примеры удачно внедренных разных подходов и манипуляции в Fire Emblem.

I. Ошибочные допущения в оценке вероятностей

В процессе эволюции человеческий мозг учился очень хорошо оперировать качественными оценками событий и образами своего опыта. А числа и абстрактную числовую оценку вероятности «случайных» событий человек придумал сравнительно недавно. Тем не менее эти числа человек в своих оценках всё равно преобразует в качественные представления: чуть-чуть, мало, много, опасно, безопасно, достаточно.Оценки эти всегда зависят от контекста и субъективного отношения к этому контексту. Именно это и является основной причиной ошибочных числовых допущений.

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

Disciples 2 — типичный промах

Стандартная атака ближнего боя имеет шанс попадания 80%. Обычно этот шанс воспринимается игроком как "почти всегда", а риск промаха — "изредка / время от времени". Вероятность промахнуться 2 раза подряд при двух атаках равна 4%. Игрок этот риск воспринимает как "почти никогда / такое будет случаться крайне редко". И когда подобное случается, игроки возмущаются на «кривой рандом».

Но в ситуациях с двумя промахами подряд и оценкой риска в 4% беглая оценка игроком имеет несколько ошибочных допущений:

1.4% это вовсе не "почти никогда". Это событие, которое будет случаться в каждом 25-ом независимом эксперименте (в среднем).

2.Оценка проводится на неправильном отрезке времени. Минимальным отрезком замера атак по 80% следует брать не 2 атаки, а все атаки одного класса (~80%) за время «настороженной» памяти игрока. Чаще всего за это время можно взять долгую игровую сессию или вообще всю игру, тут всё зависит от типа игры, памяти игрока и предпочтений считающего.

Так как настоящей статистики использования этой игры у меня нет, я буду исходить из предположения, что долгая игровая сессия в Disciples 2 длится 3 часа и за это время совершается около 250 атак с меткостью ~80%. Стоит заметить, что промахи врагов следует игнорировать, т.к. их промахи игрока не злят, и он редко их запоминает.

Так вот, оценивать следует ситуацию: «За все 250 атак ни разу не произойдет 2 промахов подряд».
Для подсчета вероятности истинности данного события была использована рекуррентная формула: P1(n)=0.8*P1(n-1)+0.16*P1(n-2). В выведении этой формулы я воспользовался помощью сообщества, цитата вычислений, подробности и результат приведены ниже.

Можно попробовать применить индукцию. Введём несколько обозначений. Вероятность сохранить лапу после n-й вылазки обозначим P(n). Представим эту вероятность в виде суммы двух вероятностей
P(n) = P1(n)+P2(n), где P1(n) это вероятность, при которой крайняя n-ая вылазка оказалась удачной, а P2(n) — неудачной.

Может показаться что P1 и P2 пропорциональны 0.8 и 0.2, но это не так. Из-за того что мы рассматриваем не любые возможные исходы, а только те, которые сохранили лапу еноту.
Попробуем теперь вывести рекуррентную формулу
P1(n)=0.8*(P1(n-1)+P2(n-1))
P2(n)=0.2*P1(n-1)
Подставим P2 в формулу для P1 получим
P1(n)=0.8*P1(n-1)+0.16*P1(n-2)
Дальше Решение рекуррентных соотношений 

Цитата с решением задачи от пользователя Serbbit

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

 var P1 = []; P1[0] = 1; P1[1] = 1; for (var n=2; n<=250; n++) {     P1[n] = 0.8 * P1[n-1] + 0.16 * P1[n-2];     console.log(n + ') ' + P1[n]); } // ответ: 250) 0.0001666846271670716 

В итоге ответ: 0.0001666846271670716
Или0.0167%

Этот ответ совпадает с ответом другого автора Kojiec9: 0.000166684627177505, который использовал свой выработанный метод с пятиричной системой счисления и вычислил результат по своей формуле в Паскале. Незначительные различия в ответах, объясняются, судя по всему, округлениями float чисел.

Так вот, за 3 часа игры в Disciples 2 игрок имеет шанс избежать двойного промаха при 80% меткости всего в0.0167%. Вот это уже действительно очень маловероятно. (а вероятностьхотя бы одного двойного промаха, соответственно равна99.9833%).

Рост вероятности хотя бы одного двойного промаха с ростом числа экспериментов

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

3. Третье неверное допущение — это ожидание зависимости во взаимно независимых экспериментах.

То есть после первого промаха игрок думает:

«Так, персонаж промахнулся с меткостью 80%. Теперь-то он точно попадёт, ведь риск двойного промаха равен всего 4%».

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

Эта особенность человеческого мозга особенно привлекательна для манипуляций со стороны казино (и им подобных) в азартных играх (подробнее об устройстве игровых автоматов от производителя).
Ещё интересные примеры заблуждений человеческого мозга можно почерпнуть в статьях про баланс Яна Шрайбера «Level 5: Probability and Randomness Gone Horribly Wrong» (Уровень 5. Вероятность и случайность пошли вразнос).

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

Используемый в играх термин «Генератор случайных чисел» (RNG / random number generator) почти всегда в действительности означает «Генератор псевдослучайных чисел». Главной особенностью этого генератора является его воспроизводимость. Воспроизводимость означает то, что, зная изначальный порождающий элемент (или зерно / seed) всегда будет получена одна и та же последовательность случайных (псевдослучайных) чисел. В некоторых играх этот эффект проявляется в том, что после перезагрузки игры последовательность попаданий и промахов остается неизменной. А в других играх не остается той же самой.

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

Чтобы лучше понять принцип работы генератора псевдослучайных чисел, можно рассмотреть способ его реализации в первых классических играх, когда ресурсы компьютеров (и консолей) были особенно сильно ограниченны. (Углубленное описание примеров и их особенностей читайте в статье «How classic games make smart use of random number generation».)

How classic games make smart use of random number generation

В Final Fantasy I использовались несколько таблиц с заранее заданными фиксированными числами с 256 значениями в каждой таблице:

  • для вычисления случайных сражений с каждым шагом в игровой карте алгоритм перемещался по таблице, изменяя индекс на 1 за раз, таким образом постепенно прокручивая все возможные значения — от этого зависел как сам факт столкновения, так и возможная группа противников;
  • для вычисления результатов сражения тоже использовалась подобная таблица из 256 фиксированных значений, но перемещение по ней происходило не только с каждым очередным использованием псевдослучайного числа, но и каждые 2 кадра. То есть каждые 2 кадра алгоритм вхолостую прокручивал таблицу с числами, тем самым уменьшая риск прогнозируемых одинаковых последовательностей. Источником энтропии тут была неопределенность, сколько времени игрок будет думать до выбора очередной команды.

В качестве зерна (порождающего элемента) в Final Fantasy I используется порядковый номер (индекс) фиксированного значения в таблице. То есть, зная место, откуда будут дальше выбираться случайные числа, можно точно предсказать какое случайное число будет выдано после 1000 проверок. В более сложных алгоритмах генерации псевдослучайных чисел зерно используется не так просто, но основной принцип и эффект остаются.

Сейчас для генерации псевдослучайных чисел в основном используются стандартные библиотеки используемых языков программирования. В качестве источника энтропии чаще всего используется текущее системное время. Для нужд игровой индустрии характеристик стандартных библиотек обычно хватает. Недостатки генератора и источника энтропии используются игроками очень редко из-за сложности их вычисления и манипулирования. Обычно это остаётся уделом спидранеров-программистов (например, взламывающего логику Pokemon Colosseum), а значит разработчикам такие тонкости чаще всего разумнее игнорировать.

III. Разные подходы к использованию генератора

1. Зерно фиксируется на момент старта миссии или игровой кампании.

Последствия для игрока: перезагрузка игры не изменит факт промаха персонажем (назовем егочокнутым Фиделем), даже если вероятность его попадания равна 99%. Однако, перед попыткой попасть игрок может совершить какое-либо другое действие, которое использует случайное число, например, походит другим персонажем — лысым Миком. В результате этого несчастливое случайное число будет использовано лысым Миком, а на чокнутого Фиделя будет использовано следующее случайное число в последовательности — тогда он, возможно, попадёт.

Как игрок может злоупотребить этим: если бросок с меткостью 50% приводит к промаху, то можно перезагрузиться и попробовать атаку с меткостью чуть-чуть повыше (55%), пока не попадёт. После попадания сохраниться и повторить это с другими бросками.

Положительные последствия для разработчика:

1) Игру можно воспроизвести пошагово, если хранить только начальное состояние, зерно и последовательность действий. Благодаря этому можно показывать повторы и даже очень компактно хранить файлы сохранений. Способ позволяет очень сильно сэкономить занимаемое место на диске/памяти.

2) Защита внутренних азартных игр, чтобы сохранение/загрузка не позволяла игроку обанкротить всех встречающихся NPC соперников.

Пример:

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

Brogue roguelike — официальный сайт

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

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

Положительные последствия для разработчика:

1) Игроки воспринимают такую игру как более честную с настоящей случайностью, просто из-за отсутствия знаний внутренних механик.

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

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

Пример:

Игра The Battle for Wesnoth использует нефиксированное зерно с принципиально честной случайностью. Честность заключается в том, что иногда возможны совершенно маловероятные последовательности неудач, и движок игры их не корректирует. Результатом этого являются периодические гневные посты раздраженных игроков в адрес разработчиков игры.

Reddit — супер ловкая русалка в Wesnoth

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

3. Зерно не фиксируется, а сами результаты подвергаются дополнительным манипуляциям.

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

Последствия для игрока: аналогично играм с нефиксированным зерном — перезагрузка позволяет пересчитать результаты.

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

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

Примеры:

Разработчик Carsten Germer использует функцию контролируемой случайности для редких и не только событий. Например, чтобы гарантировать периодическое выпадение особо редкого бонуса с шансом 1 к 10000, он после каждого «промаха» увеличивает шансы по порядку: 1 к 9900; 1 к 9800; 1 к 9700… и так до фиксации события. А чтобы гарантировать отсутствие частых редкостей, он ввел дополнительную переменную, блокирующую срабатывание на 100% в течение 10 следующих проверок после прошлого срабатывания.

В своем рогалике Grue the Monster [19] я также использовал манипуляции со случайностями. Обычно при преследовании жертв персонаж игрока должен прятаться за их спинами, поджидая, когда они сделают шаг назад и попадут к нему в лапы. Обычно такой шанс равен 1/6 в открытом пространстве (1/2 в коридорах и 1/1 в тупиках), но чтобы уменьшить раздражающий эффект особенно невезучих ситуаций, перед каждой проверкой направления хода жертвы в 15% случаев она гарантированно шла в направлении к Гру.

Самый интересный случай: в игре Fire Emblem: The Binding Blade была реализована скрытая механика определения попадания при атаках. Традиционно для серии вероятность попадания показывается игрой в процентах от 0 до 100%. В более ранних играх серии факт попадания определялся одним случайным числом от 1 до 100: если выпадающее число (например, 61) меньше или равно вероятности попадания (например, 75), то засчитывается удар, если больше, то промах.

Fire Emblem: The Binding Blade

В данной части была введена щадящая система: вместо одного случайного числа бралось среднее двух случайных чисел, и это среднее сравнивалось со значением меткости. То есть случайное число в большей степени стремится к значению 50. Это приводит к искажению линейного эффекта случайности попадания: бойцы с меткостью больше 50% попадают чаще, чем в 50% случаев, а с меткостью меньше 50% значительно реже. А так как в игре подавляющее большинство персонажей игрока имеют большую меткость, а большинство врагов меньшую, то игрок получает очень серьёзное скрытое преимущество. Ниже показан график этого эффекта, где синей линий показана частота попаданий в старой системе, а красной частота попаданий в новой в зависимости процента меткости атакующего. Например, при показываемой вероятности попадания в 90%, фактическая вероятность будет равна 98,1%, при 80% — 92,2%, а при 10% — всего 1,9%!

Искажение шанса попадания. По оси Y фактическая вероятность, по оси X — показываемая игроку

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

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

  • проход к выходу всегда должен быть хотя бы в единственном числе. Тут помогают любые алгоритмы поиска пути;
  • серия ловушек должна иметь возможность обхода, и если их создаётся слишком много в одном месте, то алгоритм должен вычислить их плотность и удалить лишние;
  • слишком сильные враги должны предоставлять хотя бы один из доступных способов их «прохождения»: грубой силой; свитками и зельями; особыми артефактами или возможностью просто от них убежать.

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

4. Вообще убрать элемент случайности из механики игры.

То есть результаты каждой атаки всегда имеют 100% вероятность попадания и фиксированный урон, а также постоянные правила срабатывания дополнительных эффектов. Вместо этого можно использовать случайные вычисления для косметических целей: периодические «позёвывания» ожидающих своего хода персонажей; отлетание чисел нанесенного урона; эффекты столкновений и взрывов. Тут нет никакой разницы, как генерировать случайные числа и насколько равномерно распределение.

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

Последствия для игрока: перезагрузка либо никак не влияет на результаты, либо влияет незначительно.

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

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

Пример:

Любые шахматы с классическими правилами.

Также сюда подходят логические roguelike. Например, очень хорошо данный метод реализован в Desktop Dungeons Alpha.

Desktop Dungeons Alpha 

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

Заключение

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

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

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

P.S. Это одна из статей моей серии публикаций, которую я постепенно перенесу в этот блог.

Источники и литература

Источники литературы доступны в первой публикации на хабре.

Комментарии: 28
Ваш комментарий

Очень информативный блог с отличным анализом. Спасибо! У Панчина еще подобный анализ встречал, но в отрыве от игр. :)

17

vidgin Спасибо. Я пока перенесу свои прошлые статьи, потом буду здесь публиковать и будущие новые.

5

Ясное дело,что ты игнорируешь в игре опасности,ведь это игра.В жизни то не перезагрузиться.

16

DanteNefelimSparda Конечно, я с Вами соглаен. Оценки искажаются и при менее явных отличиях.

3

кароче игры не для тупых

7

Что-то эта статья напомнила мне мои студенческие годы и лекции по Теории вероятности! Эх, были времена)

6

Ого, сколько проделанной работы! Люблю классические rpg, собственно за ролевую составляющую, но вот из-за таких ситуаций, как показано выше в Wesnoth, ненавижу боевую систему основанную на случайных числах. Лучше уж souls like слешер, там не так обидно, когда сливаешься, ведь все зависит только от тебя. Если собраться и напрячься, можно любого противника вынести.

5

Владимир2012 Ситуация в Веснот не просто супер-редкая, она еще и специально созданная с помощью многих сохранений и перезагрузок : )

1

qnok Ну, мне "везет" на подобные ситуации, как утопленнику. ) Сейчас прохожу потихоньку Pathfinder, бомблю часто, но продолжаю играть )

2

Владимир2012 Понимаю, с такой игрой можно и потерпеть.

2

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

5

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

5

NOD 97 Благодарю, если Вам будет интересно более подробное погружение в эту тему, то ссылки на связанные публикации будут гораздо интереснее и познавательнее.

1

Толково. Жмякну, пожалуй, на сердечко.

4
DanteNefelimSparda написал: Ясное дело,что ты игнорируешь в игре опасности,ведь это игра.В жизни то не перезагрузиться.

Ага... Так я и поверил. Особенно учитывая, что в жизни попасть под колёса автомобиля шансы в разы выше, чем на тебя упадёт сосулька. Но при этом люди всё равно зимой в скользкую погоду чуть ли не перед автомобилем в неположенном месте перебегают дорогу постоянно, словно не учитывают, что могут подскользнуться на льду, а длина тормозного пути зимой длиннее. Я каждый день вижу, как люди игнорируют элементарную технику безопасности. Элементарно не смотрят по сторонам, смело шагают на пешеходный переход и пофиг, считают переход 100% безопасным... И тут бац - авария. Я бы сказал, что для человека нет разницы - это игра или реальность. В любом случае риски воспринимает одинаково. Причём многие риски в реальности вообще за риски не считает - человек постоянно без причины рискует жизнью, потому что недооценивает риски. Но при этом опасается ходить под зданиями с сосульками, шанс упасть которых в разы ниже, чем наезд на тебя автомобиля. Логика? Почему в автомобилях люди от слова совсем перестали видеть опасность? Иногда такое впечатление, словно человек свою жизнь в компьютерной игре ценит выше, чем в реальности.

2

Janekste Это уже психология,человек постоянно видит машины,взаимодействует с ними,в итоге перестает воспринимать их как нечно опасное.Подобным способом часто фобии лечат. bombaster[dead] Про xcom читал,что специально сделаны периодические промахи и чуть приближена к 50% вероятность попадания(в обе стороны) для сохранения интереса у игрока. qnok Очень интересная статья,пиши больше,уж очень редко на пг что-то дельное появляется.

3

всё просто! Чтобы о чем-то не жалеть наверно нужно чего-то не допускать! это чего-то - есть Недопустимый процент вероятности. По Максимуму Сводить На Минимум Допустимость Недопустимого Процента Вероятности! =) если даже есть 0.1 вероятность то это обязательно произойдёт.

1

Шикарная статья! Есть вариант на гугл доках или хабре, чтобы не потерять?

1

_EHOT_ Эта статья есть на Хабре

0

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

0

Это же скопированная статья с DTF, а не авторскмй материал. Разве так можно? V.V

0

Dead_Mazaika Спасибо за внимательность. Автор я, переношу сюда свои статьи

3

qnok Тогда понятно. Очень интересная статья, побольше бы таких))

5

Кто на каком абзаце уснул?

0

Вот за рандом я и люблю Веснот с Армелло. Люди, перестаньте быть терьерами, гоняющимися за медалькой. Игры рандома как раз напоминают, что есть такое понятие как "фан" - игра ради игры.

Спойлер
0
5% получения критического урона он NPC врага — маловероятно, риск можно игнорировать; 1% риск падения сосульки, если пройти под крышей с капающими метровыми сосульками — ещё чего, лучше обойти с другой стороны тротуара;

А ничего, что во втором варианте речь идет о реальной смерти в реальной жизни, мм? Кроме того, есть малая вероятность, что в вас попадет разряд молнии или метеорит, но нам по больному счету пофиг на это. Потому что ничего мы с этим поделать не можем (хотя в случае с молнией есть ряд базовых правил безопасности)...

Стандартная атака ближнего боя имеет шанс попадания 80%. Обычно этот шанс воспринимается игроком как "почти всегда", а риск промаха — "изредка / время от времени". Вероятность промахнуться 2 раза подряд при двух атаках равна 4%. Игрок этот риск воспринимает как "почти никогда / такое будет случаться крайне редко". И когда подобное случается, игроки возмущаются на «кривой рандом»

Мда. Статья ни о чем, по сути 8) Это и так ясно. В смысле все то, что написано. Такое впечатление, что статья вырвана из какого-то школьного учебника 21го века )) Наверно кому-то интересно, но я особо не вижу, о чем здесь рассуждать. Все предельно ясно.

Ruv1k написал: В кратце можно описать че там написано?

Что есть два аспекта бытия в области вероятностей: что говорит математика, и что говорит наш мозг 8) Мозг упрощает числа и проценты до понятных нам категорий вроде "высокий шанс", "скорее всего будет" и тп. Далее идет серьезный и детальный анализ всей этой фигни с помощью примеров в видеоиграх. Для ботанов, короче.

-1

В кратце можно описать че там написано?

-5

Ruv1k Никому не верьте не слово, а особенно на глазок.

2