Помощь алгоритму программирования - вероятность и размещение - PullRequest
0 голосов
/ 21 апреля 2020

Мне нужно решить интересную проблему, и я не совсем уверен, как к ней подойти. Я надеюсь, что смогу получить некоторую обратную связь по умному способу атаковать это.

Это для бейсбольной настольной игры, в которую я играю. В основном карта каждого игрока содержит диаграмму, в которой перечислены события, такие как зачеркнутый, homerun и т. Д. c. Чтобы узнать, что происходит с игроком, вы бросаете 2 шестигранных кубика. Если результаты не удваиваются, вы добавляете кости и обращаетесь к событию, указанному на графике не двойных чисел. Если результат броска удваивается, вы обращаетесь к событию из диаграммы двойников.

enter image description here

Примеры: A d ie бросок 2 на один d ie и 3 на другой будет результатом 5, или "inf lineout". При броске d ie из двух 6s результатом будет прогулка.

У каждого игрока есть своя версия каждого из этого на своей карте, основанная на его реальной статистике.

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

HR Home Run => 0
3B Triple => 1
2B Double => 4
1B Single => 10
BB Walk => 1
HB Hit by Pitch=> 1
SO Strikeout => 0
SB Stolen Base => 1

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

Таким образом, у этого игрока будет 10 шансов для 1B Single, 4 шанса для 2B Double, 1 для BB Walk и т. Д. c. Мне нужно найти, какие слоты на его карте, чтобы разместить этот результат (а также остальные результаты). Как упоминалось ранее, возможные слоты для каждой карты:

1&1
2&2
3&3
4&4
5&5
6&6
3
4
5
6
7
8
9
10
11

Зная, что при броске 2D6 применяются следующие шансы (минус любые удвоения, например, бросок 6 обычно имеет 5 шансов [2+ 3, 3 + 2, 4 + 1, 1 + 4, 3 + 3], но поскольку двойной бросок 3 и 3 будет на другом графике, мы вычтем 1 из шансов, что приведет к 4):

Dice Result => # of Chances
1&1 => 1
2&2 => 1
3&3 => 1
4&4 => 1
5&5 => 1
6&6 => 1
3 => 2,
4 => 2,
5 => 4,
6 => 4,
7 => 6,
8 => 4,
9 => 4,
10 => 2,
11 => 2

Прямо сейчас я вручную проверяю, сколько шансов может произойти каждый бросок на приведенном выше графике и выставил его вручную. Если мне нужно 10 "1B Single" номеров, я бы попытался вручную найти 2 или более слотов, которые добавляют до 10 общих шансов. Например, я мог бы поставить 1B на слоты 6 и 7 [6 + 4 = 10]. Я хочу автоматизировать это!

Мне нужно взять шансы статистики для каждой из категорий статистики HR, 1B, 2B, 3B и т. Д. c и создать соответствующие графики для игрока. Я думаю, что это какая-то рекурсия, чтобы опробовать все комбинации и посмотреть, смогу ли я вписать все в точку на графике.

Какой шаблон проектирования можно использовать для автоматизации размещения определенных результатов на основе их вероятности?

Язык не так важен, как я знаю Python, C#, PHP, однако я, скорее всего, напишу это в PHP.

Это было закрыто из-за наличия двух вопросов и недостаточной концентрации внимания , Я удалил второй вопрос и попытался перефокусировать вопрос на конкретную проблему c.

...