2010-01-19

Jak (nie?) oszukać ruletkę

Outline

Jak (nie?) oszukać ruletkę Czytając komentarze pod jakimś ciekawym artykułem trafiłem swego czasu na wpis człowieka który naśmiewał się z komentujących ludzi i który twierdził, że on nie pracuje a zarabia 10000PLN. Twierdził, że korzysta z systemu który gwarantuje mu wygrane w ruletce w kasynach internetowych. Wskazał też miejsce gdzie znaleźć informacje o owym systemie (przyp. red. nie zacytuję żeby mu nie robić reklamy). Wrodzona ciekawość kazała mi wejść na tę jego stronę (uprzednio sprawdzając czy nie zawiera wirusów) i zobaczyć cóż to za "system". Oczywiście zachęcał do rejestracji w kasynie (bet at home) a w linku był identyfikator programu partnerskiego. Tak więc od razu było wiadomo na czym tak naprawdę zarabia. Skat inąd tekst był bardzo przekonujący więc postanowiłem sprawdzić czy to się trzyma kupy.

Cytuję

Gramy w ruletkę, obstawiając kolory stawiamy 1 zł na kolor np. czerwony - jeżeli faktycznie zostanie wylosowany czerwony kolor, wygrywamy 2 złoty, jeżeli zostanie wylosowany kolor czarny tracimy 1 złoty... kręcimy ruletką, i wypada... kolor czarny - tracimy 1 złoty zadajemy sobie pytanie: ile muszę postawić, żeby odzyskać stracone 1 złotych i jeszcze trochę zarobić?
Okazuje się, że wystarczy 2 złoty, zatem ponownie obstawiamy czerwony. Załóżmy, że mamy pecha i znowu wypadł kolor czarny, tracimy zatem 3 złote - 1zł za pierwszą grę i 2zł za drugą. Aby odzyskać 3 zł z niewielką nawiązką wystarczy, że obstawimy za 4 zł.
Losowanie przebiega jak poprzednio, ale tym razem kuleczka zatrzymuje się na kolorze czerwonym - wygrywamy (z doświadczenia wiem, że tak długie ciągi jednego koloru jak opisane powyżej zdarzają się niezwykle rzadko).
Całkowity koszt gry wyniósł: 1+2+4=7złoty,
A wygraliśmy 4 * 2 = 8 złoty
Zysk na czysto wynosi 8 - 7 = 1 złoty.
I zaczynasz znowu od złotówki i tak zarabiasz....
Czas w jakim zarobiliśmy tą złotówkę to jakaś minuta gdzie zarobisz tyle ?
Ile zarobisz przez cały wieczór siedząc 3-4 godziny ?
A gdy nazbierasz już więcej kasy - a nazbierasz, bo progresja zawsze GWARANTUJE wygraną, to zaczniesz zamiast od złotówki to od 10 złotych i wtedy w minutę zarobisz nie złotówkę a 10 zł, zaś w godzinę 600 złotych.
Przez dwie godziny masz pensję taką jak w Biedronce, więc czemu wszyscy tak nie robią ?
Właśnie nie wiem, na najprostsze pomysły najtrudniej wpaść też przez 8lat pracowałem przy kasie za marne pieniądze, teraz mi się chce z tego śmiać ... bo w życiu bym się tam nie dorobił tego co mam, a kończę budowę domu.

Programuję!

Jako programista szybciutko napisałem sobie dwie małe funkcje i już mogłem testować "system".

function ruletka($kasa_na_start,$ilosc_rozgrywek,$stawka_w_podbiciu=1){
    $kasa = $kasa_na_start;
    for($i=0;$i<$ilosc_rozgrywek;$i++){
        if( $kasa <= 0 ){
            return array ( $kasa-$kasa_na_start , "Przegrałeś wszystko w rozgrywce ".($i)."!\n" );
        }
        $j=1;
        while($j){
            if($j==1){
               $stawka = $stawka_w_podbiciu;
            }else{
               $stawka = pow(2,$j-1)*$stawka_w_podbiciu;
            }
            if( $stawka > $kasa ){
                //return "Wycofujemy sie bo nie mamy wystarczającej sumy do podbicia w losowaniu ".($i+1).", z ".$kasa_na_start."PLN zostało nam ".$kasa."PLN\n";
                $j = 0; break; //nie wycofujemy się, próbujemy odrobić straty
            }
            if(rand(0,1)){
                $kasa += $stawka;
                $j = 0;
            }else{
                $kasa -= $stawka;
                $j++;
            }
        }
    }
    if($kasa < $kasa_na_start){
        return array ( $kasa-$kasa_na_start , "Wtopa! Przetrwałeś ".$ilosc_rozgrywek." rozgrywek ale z początkowych ".$kasa_na_start."PLN zostało Ci ".($kasa)."PLN tak więc straciłeś ".abs($kasa-$kasa_na_start)."PLN\n" );
    }else{
        return array ( $kasa-$kasa_na_start , "Sukces! przetrwałeś ".$ilosc_rozgrywek." rozgrywek i po odliczeniu początkowych ".$kasa_na_start."PLN wygrałeś ".($kasa-$kasa_na_start)."PLN\n");
    }
}

function hazard($kasa_na_start=50,$ilosc_dni=30,$ilosc_rozgrywek_na_dzien=500,$stawka_w_podbiciu=1){
    $suma = $kasa_na_start;
    $str = "";
    for($i=0;$i<$ilosc_dni;$i++){
        if($suma){
            $str .= "dzień ".($i+1)." - ";
            $tmp = ruletka($suma,$ilosc_rozgrywek_na_dzien,$stawka_w_podbiciu);
            $str .= $tmp[1];
            $suma = $suma+$tmp[0];
        }
    }
    return $str."Ogólny wynik: ".($suma-$kasa_na_start)."PLN";
}

Sprawdzam!

Nie wdając się w szczegóły działania (jak ktoś programuje w PHP to może sobie to analizować) przystępujemy to sprawdzania czy jeśli wpłacę 50PLN to rzeczywiście wyciągnę po miesiącu 10000PLN. ;) Założyłem że wpłacam 50PLN i przez 30 dni staram sie rozegrać 500 "jednozłotówkowych" gier.

echo hazard(50,30,500,1);

Jak można się domyślać za każdym razem dostawałem coś w stylu:

dzień 1 - Przegrałeś wszystko w rozgrywce 24!
Ogólny wynik: -50PLN

Przy dużym szczęściu coś takiego:

dzień 1 - Sukces! przetrwałeś 500 rozgrywek i po odliczeniu początkowych 50PLN wygrałeś 308PLN
dzień 2 - Sukces! przetrwałeś 500 rozgrywek i po odliczeniu początkowych 358PLN wygrałeś 500PLN
dzień 3 - Sukces! przetrwałeś 500 rozgrywek i po odliczeniu początkowych 858PLN wygrałeś 500PLN
dzień 4 - Sukces! przetrwałeś 500 rozgrywek i po odliczeniu początkowych 1358PLN wygrałeś 500PLN
dzień 5 - Sukces! przetrwałeś 500 rozgrywek i po odliczeniu początkowych 1858PLN wygrałeś 500PLN
dzień 6 - Sukces! przetrwałeś 500 rozgrywek i po odliczeniu początkowych 2358PLN wygrałeś 500PLN
dzień 7 - Wtopa! Przetrwałeś 500 rozgrywek ale z początkowych 2858PLN zostało Ci 1310PLN tak więc straciłeś 1548PLN
dzień 8 - Wtopa! Przetrwałeś 500 rozgrywek ale z początkowych 1310PLN zostało Ci 786PLN tak więc straciłeś 524PLN
dzień 9 - Sukces! przetrwałeś 500 rozgrywek i po odliczeniu początkowych 786PLN wygrałeś 500PLN
dzień 10 - Wtopa! Przetrwałeś 500 rozgrywek ale z początkowych 1286PLN zostało Ci 762PLN tak więc straciłeś 524PLN
dzień 11 - Sukces! przetrwałeś 500 rozgrywek i po odliczeniu początkowych 762PLN wygrałeś 500PLN
dzień 12 - Wtopa! Przetrwałeś 500 rozgrywek ale z początkowych 1262PLN zostało Ci 738PLN tak więc straciłeś 524PLN
dzień 13 - Wtopa! Przetrwałeś 500 rozgrywek ale z początkowych 738PLN zostało Ci 726PLN tak więc straciłeś 12PLN
dzień 14 - Sukces! przetrwałeś 500 rozgrywek i po odliczeniu początkowych 726PLN wygrałeś 500PLN
dzień 15 - Sukces! przetrwałeś 500 rozgrywek i po odliczeniu początkowych 1226PLN wygrałeś 500PLN
dzień 16 - Wtopa! Przetrwałeś 500 rozgrywek ale z początkowych 1726PLN zostało Ci 1202PLN tak więc straciłeś 524PLN
dzień 17 - Wtopa! Przetrwałeś 500 rozgrywek ale z początkowych 1202PLN zostało Ci 166PLN tak więc straciłeś 1036PLN
dzień 18 - Sukces! przetrwałeś 500 rozgrywek i po odliczeniu początkowych 166PLN wygrałeś 500PLN
dzień 19 - Przegrałeś wszystko w rozgrywce 382!
Ogólny wynik: -50PLN

Podsumowując...

Oczywiście "system" to oszustwo a progresja gwarantuje wygraną jedynie kiedy możesz zawsze podbijać nie zależnie jak dużego będziesz mieć pecha w kolejnych losowaniach pojedynczej rozgrywki, tj. musisz mieć praktycznie nieskończone środki na początku gry. Do tego dochodzi jeszcze cierpliwość krupiera i managera stołu. :)

Zapraszam do przetestowania rozwiązania na moim "symulatorze oszusta ruletki". :)
http://smoku.net/artykuly/symulator-oszusta-ruletki

Zapraszam tez donowej poprawionej wersji "symulatora oszusta ruletki". :)
http://smoku.net/artykuly/symulator-oszusta-ruletki-progresja-generator-liczb-losowych

BTW, dla tych który chcą podważyć moje "badanie" twierdząc, że generator liczb losowych w PHP nie jest zbyt dokładny albo, że zapomniałem o zielonym polu. Nie spinajcie się, to tylko zabawa, dokładnie tak jak ruletka. :)