[C++]Sztuczna Inteligencja, Poker

0

Mam pytanie. Jest jakiś szybki sposób, na zrobienie sztucznej inteligencji dla komputera w grze poker ?? Zamierzam tą grę napisać, i bez jakiejś sztucznej inteligencji, będę musiał zastosować BARDZO dużo if'ów :/

0

Poker to gra losowa ;) Więc niech losuje sobie ile kart zastawi i które ma zastawić też :)
Jak chcesz zobaczyć jak to się robi profesjonalnie to polecam podglądnięcie sobie źródeł gier, np. na sourceforge powinieneś coś znaleźć :)

0

no ale wiesz.. :D jak będzie miał np. :
9,9,walet,dama,król
to wiadomo, że trzeba by było wyrzucić 9, a komputer by losowo wyrzucił np. dame ... :D rozumiesz o co chodzi ;)

0

No to byłyby 2 opcje (w pierwszej wersji programu może być jedna ;) ):

  • ryzykowna gra (uwzględnienie pokerów, streight'ów, karet, trójek itd.)
  • pewna gra (czyli jak jest para to niech nie rozbija pary, wymienia resztę, jak nie wychodzi mu para, to niech wymienia losową ilość kart).

A poza tym większe prawdopodobieństwo w ogóle ugrania czegokolwiek to właśnie zostawienie pary dziewiątek bo może się trafić trójka a nawet kareta :]

0
vax napisał(a)

no ale wiesz.. :D jak będzie miał np. :
9,9,walet,dama,król
to wiadomo, że trzeba by było wyrzucić 9, a komputer by losowo wyrzucił np. dame ... :D rozumiesz o co chodzi ;)

szczerze.. ja byl wywalil J Q K i liczyl ze wsrod nowych trzech kart bedzie jeszcze dziewiatka..

0

Poszukaj w internecie opisu gry w pokera i strategii (zacznij od wiki). Tam na pewno są rady jak grać, a ty jedynie co masz zrobić to zaimplementować te rady.
W tym algorytmie wszystko musi opierać się o rachunek prawdopodobieństwa i w zasadzie cały algorytm opierałby się na jego obliczaniu na podstawie posiadanych informacji, a następnie optymalizowaniu (maksymalizowaniu) nadziei statystycznej. Dla bardziej zaawansowanych można jeszcze dołożyć sieć neuronową, która będzie się uczyć zachowania przeciwnika.

A tak z ciekawości jaki to ma być poker? Teksański czy jakiś bardziej prymitywny?

0

To ma być poker, taki normalny, co grają w kasynach, duży poker, strit'y, pary karety itd. :)

0

Poker pokerowi nie równy. W wiki jest wypisane są tylko niektóre mutacje:

    * Texas Hold'em
    * Omaha (poker)
    * Omaha High-Low
    * Poker siedmiokartowy otwarty
    * Poker pięciokartowy dobierany

Najpopularniejszy i najciekawszy jest siedmiokartowy otwarty. Ty pewnie masz na myśli ten ostatni.

0

Pomijam na razie kwestię obstawiani, oto mój pomysł (brute force) na samo wybieranie kart do wymiany.

Zrób sobie listę wszystkich możliwych 5-elementowych kombinacji 24 kart, posortuj wszystkie kombinacje względem ich siły.

Gdy komputer dostanie z rozdania 5 kart któreś z nich musi wymienić - rozpoczyna szukanie najlepszego rozwiązania. Sprawdź skuteczność wszystkich możliwych kombinacji odrzucenia kart, czyli wszystkie kombinacje dowolnej ilości z 5 posiadanych kart. Będzie ich nie wiele:
2*((5 po 0) + (5 po 1) + (5 po 2)) = 2*(1+5+10) = 32 kombinacje

Dla każdej pojedynczej kombinacji sprawdzamy jej skuteczność:
Z listy wszystkich możliwych rozwiązań (którą sporządziłeś na samym początku) odrzuć te, które na pewno nie padną - wszystkie te, które wymagają przynajmniej jednej z wymienianych kart, nazwijmy ją lista A.
Stwórz listę wszystkich możliwych 5-tek kart jakie można uzyskać po dobraniu wymienianych kart. Nazwijmy ją lista B. O sile każdego elemntu z listy B decyduje pozycja na liście A. Każdy element listy B może paść z równym prwdopodobieństwiem - wyciągnij średnią z pozycji elementów listy B na liście A. Ta średnia decyduje o sile listy B czyli o jakości odrzucanej kombinacji kart. Podziel tą średnią przez długość listy A - zagwarantuje to wynik zawsze w skali od 0 do 1.

Powyższy współczynnik jakości oblicz dla wszystkich 32 kombinacji wymiany kart. I teraz możesz wybrać najlepszą kobinację, lub losować kobinację z prawdopodbieństwem zgodnym z jakością.

Do implementacji powyższego algorytmu możesz użyć szybszych metod przybliżonych - im większy stopień trudności tym lepsze przybliżenie, ale dłuższe obliczenia.

Jeśli chodzi o mądre obstawianie, blefowanie itp. to będzie ciężko. Sieć neuronowa - owszem, ale na pewno nie dorówna człowiekowi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1