Ещё одно странное распределение вероятности кубов

yroslavasako

Нашёл тут недавно ещё одну странную игровую систему для настолок. Один игрок бросает n кубов с дайсом dN, другой - m кубов с дайсом dM. Никаких бонусов нет, важен только дайс и количество кубов. Дальше каждый игрок сортирует дайсы по не возрастанию и сравниваются дайсы, начиная с первой позиции, лишние отбрасываются. За каждый дайс выше противника игрок получает удавшуюся атаку. Соответственно интересует распределение атак первого игрока (h1) и второго (h2) в зависимости от n,N,m,M. Банальный перебор не помогает даже на примерах из рулбука, где 5d8 пробивает 6d6. Вслепую играть как-то не хочется, вот и возник вопрос, как подобные задачи считать программно.

freezer

методом монте-карло? =) Разыгрываешь миллион раз, считаешь частоту событий

yroslavasako

практично, но не спортивно (в смысле программирования).

freezer

я тут даже твоё правило не понял, а ты хочешь формулу для вероятности =)
На примере распиши хотя бы

Dasar

скорее всего присутствует та или иная система расчетов под динамическое программирование. надо только ее увидеть.

yroslavasako

я тут даже твоё правило не понял, а ты хочешь формулу для вероятности =)
На примере распиши хотя бы
Петя и Вася сошлись в рукопашной схватке. Ролевая система дала им два параметра - размер куба и количество кубов. Петя имеет пять бросков восьмигранником, Вася - шесть шестигранником.
Петя выбрасывает 3,5,4,1,7 (порядок не важен). Вася выбрасывает 1, 6, 5, 6, 3, 3. Дальше они упорядочивают кубы по невозрастанию и сравнивают их.
(7,6) (5,6) (4,5) (3,3) (1,3) (-,1). Итого - Петя попадает один раз по Васе, Вася - 4 раза, один удар парирован. Результатом является пара числе - количество взаимных попаданий (1,4).
Соответственно надо вычислить вероятности всех возможных исходов.
P.S. Я пока динамическую систему не разглядел. Да и задачу с броском десятки больших кубов из 20d20 я решал не через динамику, хотя динамику там искал долго.

Dasar

почему (1, 4), а не (1,3)?

yroslavasako

Прочерк тоже считается броском на попадание. Но это не важно. Задачи решаются одинаково

Dasar

Прочерк тоже считается броском на попадание
что тогда означает "лишние отбрасываются"?

yroslavasako

считаются автоматически попавшими. Но вообще это не важно. Посчитать разницу между кубами можно за O(1) и переконвертировать ответ тоже.

freezer

хитро... тут порядковые статистики. Я даже не знаю, как тут по-простому честно посчитать вероятность. Всё-таки я за монте-карло

yroslavasako

Ну в данном конкретном случае ещё можно посчитать честно. Это всех возможных исходов броска кубика - n^k, а неубывающих последовательностей среди них C(n+k-1, k). При возрастании сложности задачи честно считать становится невозможно.
Если считать монте-карло, то как быстро будет деградировать точность, если нужно посчитать не количество атак, а исход боя для полудюжины персонажей?

freezer

а неубывающих последовательностей среди них C(n+k-1, k)
и что это тебе даст?
Если считать монте-карло, то как быстро будет деградировать точность, если нужно посчитать не количество атак, а исход боя для полудюжины персонажей?

Для монте-карло точность оценок растёт как O(N^0.5) и не зависит от размерности задачи

yroslavasako


и что это тебе даст?
То что С(15,7)*C(15,7) реально перебрать в отличие от 8^8 * 8^8.

Dmitriy82

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

durka82

Соответственно интересует распределение атак первого игрока (h1) и второго (h2) в зависимости от n,N,m,M.

Так надо всего лишь выяснить кто кого пробивает что ли? И с какой вероятностью?

freezer

нет, там видимо важно количество атак, они потом как-то влияют на исход битвы

durka82

Распределение вероятностей хвостов отсортированной последовательности при условии, что зафиксирован префикс не зависит от всего префикса, а только от его последнего элемента.

А почему оно зависит от последнего элемента префикса?
Вроде же не должно зависеть от префикса вообще.
Или имеется в виду именно не возрастание?

durka82

В смысле число успешных пробитий оппонента относительно числа успешных пробитий тебя?

Dmitriy82

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