S_o_k |
Отправлено: 20 Декабря, 2020 - 21:01:11
|
Прохожий
Покинул форум
Сообщений всего: 9
Дата рег-ции: Июнь 2019
Репутация: 0
|
Добрый день, хочется написать бота который мог бы самообучаться в игре в, которой надо взвешивать риски.
Ход игрока - это серия бросков 8-ми кубиков, в течении которых он накапливает очки. После каждого броска игрок выбирает один из выпавших результатов и откладывает в сторону все кубики с ним (например, все пятерки или все звезды). При этом нельзя выбирать значение, кубики с которыми уже были отложены в сторону на предыдущих бросках.
Каждая звезда на кубике приносит 5 очков, и для получения суммы очков необходимо иметь среди отложенных хотя бы одну звезду.
Если у игрока недостаточная сумма или нет звезд, или не может отложить кубики после очередного броска (поскольку все выпавшие значения уже откладывал), его ход кончается провалом.
Пример:
Дается 8 игральных кубиков, но у каждого кубика вместо 6 "*".
Делается бросок всех кубиков, допустим выпало 5 5 5 3 3 2 1 1, дается выбор взять все кубики с одинаковыми выпавшими очками берем три 5. (если остановится проигрыш потому что нет зведы)
кидаем 5 кубиков выпадает * 4 1 2 3 , берем *. (можно остановится сумма очков уже 20)
кидаем 4 кубика выпадает * 5 4 2 берем 4. (можно остановится сумма очков уже 24)
кидаем три кубика выпадает 5 * * (очки сгорели невозможно взять уже отложенные кубики)
Вопрос заключается в следующем, возможна ли такая реализация нейронной сети в киборе для передачи дальнейшего действия игровому боту, нужно ли бросать еще, или какой кубик взять? |
|
|
Zireael |
Отправлено: 21 Декабря, 2020 - 00:53:06
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: кидаем 4 кубика выпадает * 5 4 2 берем 4. (можно остановится сумма очков уже 24)
4 кубика у каждого 6 сторон, значит всего: 6^4 = 1296 возможных вариантов. ^ - это возведение в степень.
Т. к. до этого забрали 5 и *, то надо посчитать сколько комбинаций только из этих двух чисел, потому что они проигрышные, т. е. 5555, 555*, 55*5, 5*55, *555, 55** и т. д. до ****.
2^4 = 16 возможных вариантов. Считаем:
(1296 - 16) / 1296 * 100 = 98,77% вероятность выигрыша.
Учитывать выпадение всех одинаковых чисел имеет смысл только когда кубиков мало, 2 или 3.
Например, при бросании 2 кубиков надо узнать какова вероятность выпадения какой-то цифры на обоих. Для одного кубика это 1 к 6 что составляет 16.66%. Для двух 16.66% / 6 = 2.77%.
Почитайте про комбинаторику и теорию вероятности. |
|
|
S_o_k |
Отправлено: 22 Декабря, 2020 - 07:21:04
|
Прохожий
Покинул форум
Сообщений всего: 9
Дата рег-ции: Июнь 2019
Репутация: 0
|
Бросать еще раз или остановиться с этим понятно, можно задать риск переменной и сравнивать с ней, в допуске риска или нет. Но вот как принимать решение какую цифру выбирать при первом, и втором бросках. Есть разные варианты например при первом с набором (* 5 4 3 3 2 1 1) логичнее взять две тройки а с набором (* 5 4 3 2 2 1 1) взять одну тройку с дальнейшей "надеждой" на более "удачные" звезды и пятерки.
Zireael пишет: Для двух 16.66% / 6 = 2.77%.
будет не 2.77% а 30.5% потому что из 36 вариантов нам нужна хотя бы одна единичка а это набор (1-1, 1-2, 1-3, 1-4, 1-5, 1-6, 2-1, 3-1, 4-1, 5-1, 6-1) 11/36. Уже узнал из статьи про комбинаторику и тервер. |
|
|
Zireael |
Отправлено: 22 Декабря, 2020 - 08:52:37
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Но вот как принимать решение какую цифру выбирать при первом, и втором бросках.
Тут вообще нет проблем. Считаем сколько в сумме дадут выпавшие 1, записываем результат в массив, потом 2 и т. д. Проходим по массиву в поисках максимальной суммы. Выбираем максимальный результат, разумеется заодно надо проверять не собирали ли уже такую цифру.
Цитата: будет не 2.77% а 30.5%
Имелось ввиду шанс выпадения 11, 22, 33 и т. д. |
|
|
|