Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Liss29
27 / 16 / 4
Регистрация: 18.11.2012
Сообщений: 578
Завершенные тесты: 1
#1

Раздача карт, оценка комбинации и выяснение сколько карт взять, сколько сбросить

10.08.2016, 05:53. Просмотров 431. Ответов 3

Всем добра! Хочу спросить, как решать задачу со сдачей, оценкой карты и после всего этого нужно ещё вычислить, сколько карт нужно взять/скинуть, чтобы получить более удачную комбинацию...
Вот конкретная задача, задача из Дейтелов. Покер.

Кликните здесь для просмотра всего текста
Измените программу, разработанную в упражнении 8.13, таким образом, чтобы
она исполняла роль сдающего. Карты сдающего кладутся «лицом вниз», так что
играющий с программой их не видит. Программа должна затем оценить карту
сдающего и, основываясь на качестве карт, сдающий должен взять себе одну, две
или три карты взамен не устраивающ их его карт из первоначально розданных.
После этого программа должна оценить карты сдающего еще раз. [Предостере*
жение. Это трудная задача!]


Допустим, я сдал пять карт, затем я выяснил какая комбинация у сданных карт и есть ли она вообще, а вот после этого начинаются непонятки, как понять какие карты скинуть... Допустим, что при сдаче пяти карт не выпала никакая комбинация, тогда можно смело брать три карты в надежде на то, что выпадет какая-то более высокая комбинация, но опять же какие карты скинуть, какие три из пяти? Пока идея была такая, создать массив двумерный, например
Код
tstDeck[13][4]
, для того чтобы в нём отмечать, карие карты сданы(-1), а какие нет(0). При сдаче карт, заодно ещё и в этом массиве отмечать, что такая то карта такой то масти сдана, но после передачи в функцию этого массива встаёт другой вопрос, как сообщить компьютеру, что карта сдана столько то раз, я то понимаю, а как ему объяснить, что от него, компьютера, требуется. Я решил делать так, создаю массив, вектор не так важно, в цикле проверяю, например, если выпала девять, то считаем сколько раз была сдана девять и результат счётчика заносим в массив. Но решение это не приблизило, надо же теперь в массиве выяснить какую карту лучше скинуть, а какую из пяти оставить, например, одна карта была сдана 1 раз, вторая 2 раза, третья, допустим, тоже 1 раз ... по логике желательно скинуть карту, которая дважды была сдана.

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

Пардон, за такой сумбурный пересказ идеи, но хотя бы в нужном направлении двигаюсь или куда смотреть?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.08.2016, 05:53
Ответы с готовыми решениями:

Раздача карт и оценка комбинации
Привет! Думаю, ничего нового в моей теме не будут, но все же интересно,...

Сколькими способами из колоды (36 карт) можно выбрать неупорядоченный набор из 6 карт, удовлетворяющих условию
Сколькими способами из колоды 36 карт можно выбрать неупорядоченный набор из 6...

Реализовать структуру "Колода карт"; сформировать случайную перетасовку карт для трёх игроков
Создать структуру колоды карт, состоящую из двух полей- переменных...

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

Сколько сомножителей надо взять в произведении, чтобы равенство выполнялось с точностью ε
Известно равенство.Определить, сколько сомножителей надо взять в произведении,...

3
avgoor
1009 / 603 / 157
Регистрация: 05.12.2015
Сообщений: 1,688
10.08.2016, 12:03 #2
Цитата Сообщение от Liss29 Посмотреть сообщение
Правильно ли я понимаю, что тут в дело вступает математика, а именно, комбинаторика и теория вероятности? И можно ли эту задачу решить, не прибегая к помощи теории вероятности и комбинаторики?
Правильно понимаете. Без ТВ не решить. Там надо считать мат ожидание выигрыша в зависимости от меняемых карт (называется это функция стоимости). Для этого надо задать стоимость (выигрыш) каждой комбинации и посчитать сумму произведений стоимостей на вероятность появления (в зависимости от того, какие карты сбрасываем). Соответственно, взять наибольшую.
0
Liss29
27 / 16 / 4
Регистрация: 18.11.2012
Сообщений: 578
Завершенные тесты: 1
11.08.2016, 22:13  [ТС] #3
Добавлено через 22 часа 31 минуту
http://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{{{x}_{0}\ast {m}_{0}+{x}_{1}*{{m}_{1}}+{{x}_{2}*{m}_{2}}+{x}^{3}*{m}_{3}+{x}_{4}*{m}_{4}+{x}_{5}*{m}_{5}+{x}_{6}*{m}_{6}+{x}_{7}*{m}_{7}+{x}_{8}*{m}_{8}+{x}_{9}*{m}_{9}+{x}_{10}*{m}_{10}+{x}_{11}*{m}_{11}+{x}_{12}*{m}_{12}}}{N}
Где X - это номинал карты 2, туз, король.... m - это масть карты, а N - это количество карт в колоде.


сколько карт на руках, сколько в колоде, допустим, выпала двойка и пять... двойка на руках, в колоде ещё три двойки осталось, пять тоже выпала одна карта, значит в колоде ещё три осталось, тогда делим 6 на 50 - это количество карт в колоде, после сдачи двух карт = 0.12 или 12% Мат. ожидание. Вот пока до чего додумал. Как вам мой прогресс...
0
Liss29
27 / 16 / 4
Регистрация: 18.11.2012
Сообщений: 578
Завершенные тесты: 1
14.08.2016, 02:42  [ТС] #4
avgoor
Цитата Сообщение от avgoor Посмотреть сообщение
Для этого надо задать стоимость (выигрыш) каждой комбинации и посчитать сумму произведений стоимостей на вероятность появления (в зависимости от того, какие карты сбрасываем). Соответственно, взять наибольшую.
Как-то попроще объяснить можешь...

Добавлено через 1 час 34 минуты
avgoor
(называется это функция стоимости)
Не могу разобраться с этой функцией, возможно как-то по проще и поподробней.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.08.2016, 02:42

Как найти, сколько раз надо взять первое и второе число, чтобы получить третье
Как найти сколько раз надо взять первое и второе число что-бы получить третье...

Колода карт
Здравствуйте. Имеется код программы, которая тасует колоду карт и вытягивает...

Цикл for и 56 карт
Выводит 14! карт в каждой строке. Я не понял как это получается. //...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru