Thumbnail image

Blackjack albo oczko, czyli jak ograć kasyno?

Jedyna gra, w której możliwe jest zapewnienie sobie niewielkiej matematycznej przewagi nad kasynem. Jak to zrobić i dlaczego nie jest to sposób na nieskończony zarobek?

Spis treści

Nigdy nie byłem w kasynie. Po części dlatego, że nie stać mnie na to, żeby móc pozwolić sobie tracić dużo pieniędzy na chwilę zabawy. A po części dlatego, że nie lubię być na przegranej pozycji: kasyno dlatego zarabia, że w każdej z gier ma nad graczem niewielką przewagę prawdopodobieństwa. Jak najbardziej jest szansa wygrać, ale w dłuższej perspektywie z kasyna wychodzi się biedniejszym, a nie bogatszym. Chyba że z gier kasynowych wybierze się oczko (blackjack) i zagra się blisko strategii optymalnej. Wtedy matematyka jest po stronie gracza. Dzisiejszy wpis to ciekawostka z polotem matematycznym, w którym opowiem o tym jak to działa i dlaczego nie prowadzi to do bankructwa kasyna.

Zasady gry w oczko

Oczko to gra karciana. Każda figura ma swoją wartość: karty z twarzami (król, dama i walet) są warte $10$ punktów, a karty z liczbami są warte tyle ile wynosi numer karty (siódemka jest warta $7$ punktów). As ma wartość $1$ lub $11$, zależnie od tego, co jest lepsze dla posiadacza tej karty. Wartości posiadanych przez gracza kart się sumują. Gracz na początku otrzymuje dwie karty, może je zobaczyć i na tej podstawie podjąć decyzję czy chce kolejnej karty (hit) czy woli się zatrzymać (stand). Celem jest osiągnięcie jak największej wartości kart, jednak przekroczenie $21$ punktów (bust, albo po polsku fura) oznacza przegraną.

Tutaj przykład idealnej ręki w oczko: as wart 11 punktów oraz walet wart 10 dają optymalne 21 punktów na ręku.

Gra toczy się przeciw krupierowi w kasynie, który również ma swoje karty (jedna z nich jest odsłonięta dla gracza). Przed rozdaniem gracz ustala stawkę, o którą będzie się toczyła gra (kładąc żetony w odpowiednie miejsce stołu). Jeżeli gracz przekroczy $21$ punktów, to automatycznie przegrywa, a krupier nawet nie dotyka swoich kart. Jeżeli gracz się zatrzyma, krupier ujawnia swoją drugą kartę, a następnie, niczym komputer, postępuje według prostego algorytmu: jeżeli ma $16$ punktów lub mniej to musi dobrać kartę, a jeżeli ma $17$ punktów lub więcej to się zatrzymuje. Jeżeli krupier, dobierając kolejną kartę przekroczy $21$ punktów: gracz wygrywa. W przeciwnym przypadku o zwycięstwie decyduje to, kto zdobył więcej punktów. Jeżeli gracz wygrał, otrzymuje swój zakład oraz drugie tyle od krupiera. Jeżeli gracz przegrał, to traci swoje żetony, które postawił. W przypadku remisu, stawka przechodzi do następnego rozdania.

Stół do gry w oczko w kasynie. Licencja Creative Commons.

Tak naprawdę gra jest odrobinę bardziej skomplikowana:

  • po zobaczeniu swoich dwóch kart oraz zobaczeniu jednej karty krupiera, gracz może podwoić zakład, ale wtedy otrzyma tylko jedną kartę i będzie musiał się na tym zatrzymać,
  • po zobaczeniu swoich dwóch kart, gracz może się od razu poddać, tracąc połowę swojego zakładu,
  • jeżeli gracz otrzyma dwie karty z tą samą figurą, może (ale nie musi) rozdwoić swój zakład, czyli dołożyć drugie tyle do stawki i wcielić się w rolę dwóch graczy: jeden z nich ma jedną kartę, a drugi drugą kartę, każdy z tych “graczy” walczy w tym rozdaniu o swoją stawkę i może potem podejmować niezależnie od drugiego,
  • jeżeli gracz otrzyma dwie karty, w których od razu jest $21$ punktów, ma oczko i jeżeli krupier nie ma oczka, to gracz od razu dostaje zwrot swojego zakładu oraz $\frac{3}{2}$ swojej stawki od krupiera,
  • jest jeszcze tzw. ubezpieczenie (od oczka krupiera), które jednak się matematycznie nie opłaca, dlatego nie będę o tym opowiadał.

Analiza gry

Niewątpliwą przewagą kasyna jest w tej grze to, że najpierw sprawdzana jest ewentualna fura gracza, a dopiero potem następuje gra krupiera. Wcale nie tak rzadko jest tak, że krupier też przekroczyłby $21$ punktów, ale nikt się o tym nie dowie, bo gracz przekroczył $21$ punktów wcześniej. Z drugiej strony, gracz może inteligentnie podejmować decyzje patrząc na swoje karty i jedną kartę krupiera. Krupier zaś, mimo że reaguje jako ostatni i widzi całą sytuację, musi działać według ściśle ustalonego algorytmu, który w ogóle nie bierze pod uwagę kart gracza. Jak jedno z drugim się balansuje?

Strategia optymalna gry

Gdyby grać tak samo jak krupier, przewaga kasyna wynosi około $5.5\%$ (tyle przeciętnie swojego zakładu traci się na jednym rozdaniu). Gdyby mieć strategię, że nigdy nie robimy fury (czyli zatrzymujemy się już przy $11$ punktach i więcej), przewaga kasyna maleje do niewiele poniżej $4\%$. Nie trudno się jednak domyślić, że można grać lepiej. Łatwo wykonać symulacje komputerowe i wyliczyć pełną strategię, a co więcej, niewiele potrzeba, żeby ją w pełni zapamiętać, bo stanem gry jest:

  • liczba punktów gracza,
  • posiadanie lub nie asa (który zmieni się w jedynkę, gdy będzie to potrzebne),
  • posiadanie lub nie pary,
  • widoczna karta krupiera.

Są więc do zapamiętania trzy tabelki:

  • dla sytuacji, w których gracz ma dwie różne karty (inne niż as),
  • dla sytuacji, w której gracz ma asa i inną kartę,
  • dla sytuacji, w której gracz ma dwie jednakowe karty.

Tabelki można znaleźć na Wikipedii, a poniżej podsumuję co trzeba zapamiętać, żeby zapamiętać jedną z nich. Jeżeli gracz ma dwie różne karty inne niż as, to powinien:

  • dobrać kolejną kartę jeżeli ma co najwyżej $8$ punktów,
  • jeżeli ma $9$ punktów, to powinien podwoić, o ile krupier ma trójkę, czwórkę, piątkę lub szóstkę, a w innym przypadku dobrać kolejną kartę,
  • jeżeli ma $10$ punktów, to powinien podwoić, o ile karta krupiera to nie jest dziesiątka, walet, dama, król albo as, a w innym przypadku dobrać kolejną kartę,
  • jeżeli ma $11$ punktów, to powinien podwoić, o ile karta krupiera to nie jest as, a w przypadku asa powinien tylko dobrać kartę,
  • jeżeli ma $12$ punktów, to powinien się zatrzymać, jeżeli karta krupiera to czwórka, piątka lub szóstka, a w innym przypadku dobrać kolejną kartę,
  • jeżeli ma od $13$ do $16$ punktów, to powinien się zatrzymać, jeżeli karta krupiera to szóstka lub mniej, a w innym przypadku dobrać kolejną kartę,
  • jeżeli ma $17$ punktów lub więcej, to powinien się zatrzymać.

Mniej więcej podobna rzecz jest do zapamiętania dla dwóch pozostałych przypadków typów kart początkowych gracza. Absolutnie da się to zapamiętać. Nie trzeba być matematycznie uzdolnionym, nie trzeba być nijak uzdolnionym, żeby z tej strategii skorzystać.

Strategia sprytnie balansuje wygrane i przegrane gracza z powodu fury gracza, fury krupiera oraz posiadania więcej/mniej punktów niż krupier. No dobrze, to jaka jest przewaga gracza w przypadku optymalnej strategii? Około minus pół procenta. Tak, kasyno nadal ma przewagę, choć teraz już naprawdę niewielką.

Jak na tym można zarobić?

No dobrze, ale przecież na początku wpisu pisałem, że można sobie zapewnić matematyczną przewagę, a teraz twierdzę, że nawet grając najlepiej jak się da, jest się pół procent do tyłu na rozdanie. To o co tutaj chodzi?

Teraz trzeba nieco powiedzieć o praktyce kasynowej: gra w oczko toczy się kilkoma taliami kart, które są tasowane (zazwyczaj w automatach do tego przeznaczonych). Kolejne gry toczą się zazwyczaj do zużycia od około połowy do około $\frac{3}{4}$ liczby wszystkich przetasowanych kart. Nie gra się do ostaniej karty, bo można ją przecież z góry przewidzieć, choćby pamiętając ile asów, ile króli, ile dam etc. już było zużytych w poprzednich rozdaniach.

Gracz ma więc do dyspozycji jeszcze jedną nadzieję: może brać pod uwagę, że prawdopodobieństwo wystąpienia kart w kolejnych rozdaniach zależy od tego, jakie karty wypadły już w poprzednich rozdaniach. Jeżeli zużytych zostało nieproporcjonalnie więcej kart wartych dużo punktów, opłaca się bardziej dobierać, bo ryzyko przekroczenia $21$ punktów jest mniejsze. I odwrotnie: jeżeli zużytych dostało dużo niskich kart oraz asów, opłaca się wcześniej zatrzymywać, bo w talii zostało więcej kart wysokich i ryzyko, że przekroczymy $21$ jest nieco większe niż zazwyczaj. W niektórych warunkach gracz jest w stanie wyrobić sobie przewagę modyfikując odrobinę ogólną strategię opisaną powyżej oraz przede wszystkim dobierając rozmiar stawek odpowiednio do sytuacji. Modyfikacja strategii w realnie występujących sytuacjach potrafi przynieść nawet $2\%$ przewagi (średnio dwa centy za każdego postawionego dolara). Zmiana stawek na większe w odpowiednich momentach redukuje negatywne skutki domyślnej półprocentowej straty na początku gry. Ostatecznie okazuje się więc, że wbrew temu co wydawało się nam na początku: oczko to gra, w której można wygrać z kasynem.

Gdzie jest haczyk?

Są ludzie, którzy rzeczywiście zarabiają trochę pieniędzy na tej (niezbyt trudnej do opanowania) strategii. Kasyna jednak nie lubią klientów, którzy grają w gry dobrze i wygrywają pieniądze i gdy tylko zorientują się, że gracz “liczy karty”, uprzejmie proszą go o zakończenie gry. Poniżej przykład:

Jeżeli zatem w kasynie zorientują się, że gracz zbyt często zmienia swoją stawkę i w zbyt szerokim zakresie (tzn. na przykład w niekorzystnej dla gracza sytuacji stawia $5, a w korzystnej $300), to szybko do gracza podejdzie ktoś, kto wyprosi go z gry.

Bonus: Jak wyliczono tabelki optymalnej strategii?

Ponieważ jest to blog o edukacji, wypadałoby jeszcze powiedzieć coś o tym, jak wyliczono tabelki optymalnej gry. Opowiadałem o tym ambitnym uczniom na zajęciach w liceum, a cały kod wraz z wytłumaczeniem napisaliśmy live na rzutniku. Okazuje się, że ustalenie optymalnej gry jest dość łatwe, ze względu na dość małą liczbę istotnie różnych stanów w grze. Program jest dość szybki nawet bez żadnych optymalizacji: oparty o funkcję rekurencyjną, która pamięta stan gry i rozważa wszystkie możliwe akcje gracza (wybierając tę o największej wartości oczekiwanej zwrotu z zakładu), sprawdzając wszystkie możliwe wyniki dobrania karty. W programie założyłem (chyba niepoprawnie), że po wykonaniu splita (podziału pary na dwóch podgraczy) nie można zrobić double’a (podwojenia stawki z dobraniem tylko jednej karty). Sprawdziłem jednak, że program wygenerowałby praktycznie takie samą tabelki jak na Wikipedii.

Kod programu (w C++) znajduje się w moim repozytorium tutaj. Program zakłada nieskończoną talię kart (a więc liczy tylko strategię podstawową). Tak jak pisałem wcześniej, strategia zmienia się odrobinę w zależności od dokładnych zasad gry oraz rozkładu pozostałych kart w talii (taliach).

Ciekawostki i podsumowanie

O całym zagadnieniu liczenia kart w grze w oczko powstał nawet film. Jak to zwykle w kinemetografii bywa, trzeba było nieco podkoloryzować sytuację i skupić się na warstwie fabularnej, a nie edukacyjnej. Bardzo proste znane zagadki z prawdopodobieństwa (np. Monty Hall problem) są przedstawiane jako materiał na MIT, Metoda Newtona na znajdowanie miejsc zerowych funkcji jakoś powiązana jest ze znajdowaniem geniusza do liczenia kart w Las Vegas. W filmie też za liczenie kart w kasynie ląduje się w piwnicy i jest się bitym przez ochroniarzy… no trochę trzeba było podkoloryzować. Zresztą, trailer filmu pokazuje o czym jest ten film.

Tak czy siak, skoro tematem zainteresował się przemysł filmowy, wydaje mi się, że jest to jakiś wskaźnik, że jest to temat ciekawy. Zrozumienie czym jest wartość oczekiwana i prawdopodobieństwo w aspektach praktycznych również wydaje mi się ważne i pouczające, o czym pisałem już wcześniej na blogu.

Komentarze