Ещё одно странное распределение вероятности кубов
методом монте-карло? =) Разыгрываешь миллион раз, считаешь частоту событий
практично, но не спортивно (в смысле программирования).
На примере распиши хотя бы
скорее всего присутствует та или иная система расчетов под динамическое программирование. надо только ее увидеть.
я тут даже твоё правило не понял, а ты хочешь формулу для вероятности =)Петя и Вася сошлись в рукопашной схватке. Ролевая система дала им два параметра - размер куба и количество кубов. Петя имеет пять бросков восьмигранником, Вася - шесть шестигранником.
На примере распиши хотя бы
Петя выбрасывает 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 я решал не через динамику, хотя динамику там искал долго.
почему (1, 4), а не (1,3)?
Прочерк тоже считается броском на попадание. Но это не важно. Задачи решаются одинаково
Прочерк тоже считается броском на попаданиечто тогда означает "лишние отбрасываются"?
считаются автоматически попавшими. Но вообще это не важно. Посчитать разницу между кубами можно за O(1) и переконвертировать ответ тоже.
хитро... тут порядковые статистики. Я даже не знаю, как тут по-простому честно посчитать вероятность. Всё-таки я за монте-карло
Если считать монте-карло, то как быстро будет деградировать точность, если нужно посчитать не количество атак, а исход боя для полудюжины персонажей?
а неубывающих последовательностей среди них C(n+k-1, k)и что это тебе даст?
Если считать монте-карло, то как быстро будет деградировать точность, если нужно посчитать не количество атак, а исход боя для полудюжины персонажей?
Для монте-карло точность оценок растёт как O(N^0.5) и не зависит от размерности задачи
То что С(15,7)*C(15,7) реально перебрать в отличие от 8^8 * 8^8.
и что это тебе даст?
Поэтому динамическим программированием. Каждая подзадача состоит в вычислении распределения вероятностей исходов (пар (нанесённый урон, нанесённый урон)) для хвоста партии такой-то длины, при условии что непосредственно перед этим хвостом у одного игрока было такое-то значение на кубике, а другого - такое-то.
Соответственно интересует распределение атак первого игрока (h1) и второго (h2) в зависимости от n,N,m,M.
Так надо всего лишь выяснить кто кого пробивает что ли? И с какой вероятностью?
нет, там видимо важно количество атак, они потом как-то влияют на исход битвы
Распределение вероятностей хвостов отсортированной последовательности при условии, что зафиксирован префикс не зависит от всего префикса, а только от его последнего элемента.
А почему оно зависит от последнего элемента префикса?
Вроде же не должно зависеть от префикса вообще.
Или имеется в виду именно не возрастание?
В смысле число успешных пробитий оппонента относительно числа успешных пробитий тебя?
И во втором абзаце тоже под партией я понимаю процесс, когда игроки уже отсортировали свои последовательности по невозрастанию, расположили их рядом и начинают сравнивать соответствующие элементы и подсчитывать урон.
Оставить комментарий
yroslavasako
Нашёл тут недавно ещё одну странную игровую систему для настолок. Один игрок бросает n кубов с дайсом dN, другой - m кубов с дайсом dM. Никаких бонусов нет, важен только дайс и количество кубов. Дальше каждый игрок сортирует дайсы по не возрастанию и сравниваются дайсы, начиная с первой позиции, лишние отбрасываются. За каждый дайс выше противника игрок получает удавшуюся атаку. Соответственно интересует распределение атак первого игрока (h1) и второго (h2) в зависимости от n,N,m,M. Банальный перебор не помогает даже на примерах из рулбука, где 5d8 пробивает 6d6. Вслепую играть как-то не хочется, вот и возник вопрос, как подобные задачи считать программно.