пятница, 22 декабря 2017 г.

Рассчет вероятностей в варгеймах - ведра кубиков

Ведра кубиков

Автор: Фил Дютре (Phil Dutre)
Оригинал статьи:  http://wargaming-mechanics.blogspot.ru/2017/02/buckets-of-dice.html
Процедура определения результата с помощью кубиков в военных играх может быть разной. В прошлом посте я рассмотрел противопоставленные броски кубиков (http://wargaming-mechanics.blogspot.ru/2017/02/opposed-die-rolls.html). В данной статье я рассмотрю метод, который наиболее часто называется «ведра кубиков».
Для тех кому данное название ничего не говорит, метод «ведер кубиков» обычно относится к бросанию большого числа кубиков – обычно шестигранных (далее К6) – сравнения результатов на них с неким заданным числом, и подсчетом числа удачных бросков для определения результатов боя. Этот метод используется во множестве правил военных игр, но наиболее известными правилами такого типа является Вархаммер (Warhammer). Но так  же он используется и в исторических правилах, таких как «Черный порох» (Black Powder) или «Грозный лев» (Lion Rampant).
Часто, в данном методе практикуется несколько последовательных бросков. Например, одному игроку нужно кинуть 12 кубиков и сравнить их с заданным числом, что бы попасть. Затем, защищающийся «спасается» от попаданий кидая кубики и сравнивая их с другим заданным числом. В некоторых правилах требуется провести три серии бросков друг за другом. Точная терминология и процедура могут отличаться от правил к правилам.

Как и с любыми другими процедурами броска кубиков, метод «ведер кубиков» сам по себе не определяет качество правил. Он только имеет значение когда рассматривается в комплексе со всеми правилами изучаемой игры. Однако, все же может быть полезным понимать основные принципы данного метода, независимо от каркаса правил. Хороший мастер должен понимать свои инструменты, и я думаю, что варгеймер, особенно если он сам пишет правила, должен понимать, как работают кубики.

Прежде чем мы продолжим нужно обсудить некоторую терминологию. Мы будем предполагать, что кидаются обычные шестигранные кубики. Бросок на 5+ означает, что для получения «попадания» или «удачного результата» нужно выбросить 5 или 6; 4+ означает, что нужно выбросить 4 или больше и т.д. Аналогично 5- означает что нужно выбросить 5 или меньше. Если нам нужно кинуть 10 кубиков и выбросить 3+, то мы будем записывать это как (10, 3+). Это позволит нам сэкономит и не расписывать каждый раз, сколько кубиков мы кидает и какое число является целевым.

Что же касается записи вероятностей, то в зависимости от контекста, мы будем либо использовать проценты (например 30%), либо фрактальные числа от 0 до 1 (например, 0,3), что наиболее часто используется при расчете вероятностей.

Последняя ремарка, мы будем рассматривать все процессы с точки зрения игрока пытающего нанести «попадания» или «получить удачные результаты». В большинстве игр – это будет игрок, пытающийся определить результат атаки. Для этого нам иногда придется превращать броски кубиков из удачных в провальные. Например, когда нужно провести «спасительный бросок», с целевым числом 5+, то для атакующего этот бросок будет удачным, если выпадет 4-. Последовательность, в которой атакующему, на 10 кубиках надо получить попадания на 3+, а затем защищающемуся защититься на 5+, будет записана как (10,3+,4-).

Математика
Я надеюсь, что большинство игроков понимают, что если мы кидаем один кубик, а целевым числом является 4+, то это даст нам три варианта удачных бросков из шести возможных. А если целевым числом является 5-, то это даст нам 5 удачных результатов из 6 и так далее. Таблица ниже показывает вероятности получения удачного результата при броске одного кубика.


Один К6
1+ или 6-
2+ или 5-
3+ или 4-
4+ или 3-
5+ или 2-
6+ или 1-
% попаданий
6/6=100%
5/6=0,83
4/6=0,67
3/6=0,5
2/6=0,33
1/6=0,17

Когда мы кидаем несколько кубиков все усложняется. Например мы кидаем 12 кубиков с целевым числом 5+, сколько удачных результатов мы можем ожидать? Какова вероятность, что мы получим ровно 4 попадания, и т.д.? К счастью, этот раздел теории вероятности очень хорошо изучен. Математические функции, описывающие данные вероятности называются биноминальное распределение. Эта функция позволяет нам рассчитать вероятность получения определенного числа «удач», при заданном числе бросаемых кубиков, и вероятности получения «удачи» при броске одного кубика. Здесь мы не будем разбирать полную формулу, но заинтересованные варгеймеры могут ознакомится с ней в приложении, либо по ней можно найти множество информации в сети.

Теперь давайте взглянем на несколько графиков, что бы понять как биноминальное распределение выглядит на практике. График ниже показывает различные результаты для (6,6+). Как можно видеть есть 33% вероятность получить 0 удач, 40% вероятность получить 1 удачу, 20% шанс получить 2 удачи и т.д. Как можно было ожидать вероятность получить 5 или 6 удач практически равна 0 (слишком мала что бы отобразить ее на графике). Так же обратите внимание на асимметричное распределение возможных значений, при котором у события получить ровно 1 удачу наибольшая вероятность.


Похожий рисунок можно наблюдать когда мы оставляем целевое число равное 6+, но увеличиваем число кубиков с 6 до 12. График ниже показывает распределение вероятностей для ситуации (12,6+):


Если мы увеличим целевое число с 6+ до 4+, то мы ожидаем увеличения числа попаданий, но мы так же увидим симметричное распределение, так как шансы успеха и провала одинаковы – 50%. График ниже показывает распределение для ситуации (12,4+):

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

Мода показывает число какое число удачных результатов имеет наибольшую вероятность выпадения. Для ситуации (12,6+) мода равна 2, для ситуации (12,4+) мода равна 6, что можно легко увидеть из приведенных выше графиков. Мода не является значением, которое имеет вероятность больше 50% (что является часто встречающимся заблуждением), она показывает, что из всех возможных результатов (0 попаданий, 1 попадание, 2 попадания и т.д.), мода встречается чаше всего.

Для метода «ведра кубиков» моду можно получить, умножив число кубиков+1 на вероятность получения попадания на одном кубике, а затем округлив вниз. Так для ситуации (10,5+), мы умножаем 11 (10+1) на 2/6 = 3,67; округляя вниз получаем, что мода равна 3. Учтите, что для малого числа кубиков, или для низких вероятностей мода может быть равна 0. Есть одна оговорка, если до округления мы получаем целое число. В этом случае рассчитанная мода, а так же мода-1 имеют одинаковые вероятности возникновения. Например мода для ситуации (11,5+) равна 3 и 4.

Ожидаемое значение является более точной переменной для метода «ведра кубиков» и показывает среднее число успехов, которые мы можем ожидать. Например, рассмотрим ситуацию (10,5+) в которой мы можем получить от 0 до 10 удачных результатов. Если мы повторим ситуацию (10,5+) множество раз, и подсчитаем среднее число удачных результатов за множество попыток, мы получим ожидаемое значение. Другой способ получения ожидаемого значения – перемножить число кубиков на вероятность одиночного удачного результата. Для ситуации (10,5+) ожидаемое значение рассчитывается как 10 умножить на 2/6 = 3,33. Это не целое число, и оно немного не интуитивно. В конце концов мы никогда не сможем получить 3.33 попадания.

Хорошей аналогией для понимания разницы между модой и ожидаемым значением может являться число детей в типичной семье, которое равно 1.7 для многих западноевропейских стран. Конечно мы не найдем ни одной семьи, в которой было бы 1,7 ребенка, это просто результат сложения всех детей и деления получившегося числа на число семей. Однако семей с 1 ребенком больше всего, а значит, мода равна 1.

В качестве дальнейшей иллюстрации таблица в которой указаны мода и ожидаемое значение (в скобках) для броска 4,8,12 и 16 кубиков для различных вероятностей попадания:


2+
3+
4+
5+
6+
4 кубика
4 (3.33)
3 (2.67)
2 (2.00)
1 (1.33)
0 (0.67)
8 кубиков
7 (6.67)
5 and 6 (5.33)
4 (4.00)
2 and 3 (2.67)
1 (1.33)
12 кубиков
10 (10.00)
8 (8.00)
6 (6.00)
4 (4.00)
2 (2.00)
16 кубиков
14 (13.33)
11 (10.67)
8 (8.00)
5 (5.33)
2 (2.67)
 
Для метода «ведра кубиков» мода и ожидаемое значение различаются максимум на 1. Таким образом оба числа дают нам хорошее представление о природе распределения и числа удач, которые мы можем ожидать.

Последовательные броски «ведер кубиков»

Часто, правила варгейма, требуют повести последовательные броски ведер кубиков. Типичным примером является сначала тест на попадание, а затем удачные кубики перебрасываются в тесте на спасение. Как можно рассчитать ожидаемые удачи для такой процедуры? Опять, математика приходит нам на помощь. Общее поведение последовательного броска «ведер кубиков» является биноминальным распределением, с вероятностью удачи равной перемножению всех отдельных вероятностей.

Разберем пример для лучшего понимания. Например ситуация (12,5+) наш тест на попадание, а затем проходится тест на спасение с вероятностью 4- (не забывайте мы рассматриваем ситуацию с точки зрения атакующего). Это эквивалентно одному биноминальному распределению с использованием 12 кубиков и вероятностью удачи равной 0,33 х 0,67 = 0,22. Мода такого распределения равна 2, а ожидаемое значение 2,67.

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


12 кубиков
2+
3+
4+
5+
6+
2+
9 (8.33)
7 (6.67)
5 (5.00)
3 (3.33)
1 (1.67)
3+
7 (6.67)
5 (5.33)
4 (4.00)
2 (2.67)
1 (1.33)
4+
5 (5.00)
4 (4.00)
3 (3.00)
2 (2.00)
1 (1.00)
5+
3 (3.33)
2 (2.67)
2 (2.00)
1 (1.33)
0 (0.67)
6+
1 (1.67)
1 (1.33)
1 (1.00)
0 (0.67)
0 (0.33)

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

Такой же анализ можно провести для трех последовательных бросков «ведер кубиков». В Вархаммере используются тест на попадание, тест на ранение и наконец тест на спасение. Предположим в конкретной атаке мы кидает 15 кубиков, и шанс попасть равен 3+ (вероятность 0,67). Шанс ранения равен 4+ (вероятность 0,5), а шанс на спасение равен 6+ (вероятность успеха для атакующего 0,83). Общая скомбинированная вероятность равна 0,28, что дает моду равную 4, а ожидаемое значение равное 4,16. Опять, порядок, в котором производятся броски кубиков не важен.

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

Изменение целевого значения

Изменение целевого значения серией модификаторов +1 или -1 является наиболее распространенным методом учесть влияние укрытия, типа оружия, тактической ситуации и т.д. +1 или -1 увеличивает или снижает вероятность на 1/6 или 17%. Грубо говоря, не обращая внимания на некоторые неожиданные эффекты от округления, мы можем ожидать что мода увеличится на 1 или снизится на 1 за каждые 6 кубиков и за каждое изменение на +1 или -1.

Когда мы рассматриваем влияние на последовательные «ведра кубиков», эффект будет снижен, так как вероятность 0,17 еще умножается на вероятность других бросков кубика. Возьмем для примера 3 последовательных броска дающих удачные результаты на 3+, 4+ и 3+. Для 12 кубиков мода равна 2. Предположим первый бросок имеет модификатор +1, что даст нам итоговые целевые значения 2+,4+ и 3+, теперь мода равна 3. Хотя, кому-то может показаться что модификатор +1 для 12 кубиков – это серьезное изменение, мода меняется всего лишь с 2 до 3. Более того, не важно к какому из трех бросков будет применен модификатор +1. Предположим мы модифицировали второе число и получили целевые значения равные 3+, 3+ и 3+. Это даст нам моду равную 3. Применив модификатор к третьему числу, мы получим целевые значение 3+, 4+, 2+, а мода будет равна 3.

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

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

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

Изменение числа кубиков

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

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

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

Выводы
Подведем итоги, что нужно помнить, при создании собственных правил с «ведрами кубиков»:
1. Модификаторы нужно применять к броску кубиков, который делает игрок, контролирующий те фигурки, из-за которых нужно использовать модификаторы.
2. Либо изменяйте количество кубиков, либо целевое число требующееся для получения удачного результата, но не оба этих параметра.
3. Если это уместно, то сначала проходите тест по наиболее сложному целевому число. Это уменьшит число кубиков в последующих «ведрах кубиков».
4. И последнее, для эстетов: закупитесь кубиками одинакового цвета и размера. Визуально гораздо приятнее когда приходится кидать множество одинаковых кубиков. Более того, если ваши фигурки покрашены по высокому стандарту, то зачем использовать плохие кубики? Как с фигурками и местностью, ваши кубики заслуживают быть хорошего качества!

Приложение
Биноминальное распределение Bin(k, n, p) обычно представляют в виде функции с тремя переменными: k – число удачных результатов из общего числа n результатов, а p – это вероятность что одиночное событие будет удачным. Если мы кидаем 12 кубиков, а удачными результатами будут значения 3+, то Bin(5, 12, 0,67) даст нам вероятность, что точно на 5 кубиках мы получим удачный результат 3 или выше.
Полная формула выглядит так: Bin(k, n, p) = C(n, k) . p^k . (1-p)^(n-k) где C(n, k) является комбинаторной функцией C(n, k) = n! / k!(n-k)!; а n! факториальной функцией n! = n x (n-1) x (n-2) x .... x 2 x 1. p^k – просто p возведенная в степень k.

Например, рассчитаем Bin(5, 12, 0,67). Сначала нужно подсчитать C(5, 12) = 12!/5!7!, что дает результат (12 x 11 x 10 x 9 x 8) / (2 x 3 x 4 x 5)= 792. Вставляя это в Bin(5, 12, 0.67) = 792 x 0.67^5 x 0.33^7 = 0.05. Таким образом шанс получить 5 попаданий при броске 12 кубиков, если попаданием считается результат 3 или выше, равен 5%.

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