Testování algoritmu pro podvod s ruletou
Každý člověk, který se pohybuje na internetu, určitě narazil na stránku, která se jej bude snažit zlákat k sázení v ruletě a ukazovat mu šanci jak se snadno stát milionářem. Na tuto stránku jsem narazil i já. Rozhodl jsem se, že bez peněz a rizika vyzkouším jak tento manuál funguje v praxi.
Spustit si online ruletu a zkoušet mi ale přišlo velmi časově náročné a proto jsem se rozhodl, že si celý test naprogramuji.
Pro programování jsem se rozhodl využít programovací jazyk Java. Na výstup bude stačit konzole. Celý program bude značně zjednodušený a bude umět pouze tento jeden experiment. Obsahuje ale určitou strukturu a tak by neměl být problém jej rozšířit a použít dál.
Třída Ruleta, která reprezentuje virtuální ruletu, vypadá takto.
public class Ruleta {
private int padleCislo;
private Random nahoda;
public Ruleta(){
nahoda = new Random();
}
public void zatoc(){
this.padleCislo = nahoda.nextInt(37);
}
public boolean vsadNaBarvu(String barva){
if(barva.equals(vratBarvu())){
return true;
}
else{
return false;
}
}
private String vratBarvu(){
if(padleCislo <= 18 && padleCislo != 0){
return "cervena";
}
else{
return "cerna";
}
}
}
Ruleta funguje následovně. Vytvoříme si její instanci. Pro zatočení ruletou zavoláme metodu zatoc(). Vygeneruje se nám náhodně číslo v intervalu <0;36>, reprezentující jednu položku rulety. Metoda vsadNaBarvu() vrací true v případě, že jsme vsadili na správnou barvu a false v případě, že jsme se mýlili. Pro zjednodušení jsem si určil, že čísla z intervalu <1;18> budou červená a čísla z intervalu <19;36> budou černá. Neodpovídá to sice pravidlům rulety, ale pravděpodobnost zůstává stejná.
Třída hra reprezentuje naši hru. Obsahuje instanci rulety a naše herní peníze.
public class Hra {
private int penize;
private Ruleta ruleta;
public Hra(){
this.penize = 1000;
this.ruleta = new Ruleta();
}
public boolean vsadNaBarvu(int vsazenaCastka, String barva){
if(this.penize < vsazenaCastka){
return true;
}
this.penize -= vsazenaCastka;
ruleta.zatoc();
if(ruleta.vsadNaBarvu(barva)){
this.penize += (vsazenaCastka*2);
return true;
}
else{
return false;
}
}
public int vratPenize(){
return this.penize;
}
}
Třída obsahuje metody vsadNaBarvu() a vratPenize().
Metoda vsadNaBarvu() slouží k vsazení částky. Předáváme částku, kterou hodláme vsadit a barvu. Metoda vrací true v případě, že jsme vyhráli a false v případě, že jsme prohráli. Metoda vrací true i v případě, že nelze tolik peněz vsadit. Vysvětlím později.
Metoda vratPenize() vrací naše jmění.
A jdeme do finále. Hlavní třída našeho projektu, Ruletatest, bude provádět samotný test.
public class RuletaTest {
Hra hra;
public RuletaTest(){
hra = new Hra();
int vsazenaCastka = 10;
while(hra.vratPenize() >= 10){
System.out.println("Vsadil jste "+vsazenaCastka);
if(hra.vsadNaBarvu(vsazenaCastka, "cervena")){
vsazenaCastka = 10;
}
else{
vsazenaCastka = vsazenaCastka*2;
}
System.out.println("A teď máte "+hra.vratPenize());
}
}
public static void main(String[] args) {
new RuletaTest();
}
}
Celý test funguje přesně podle návodu, který můžete najít například na Google po zadání klíčových slov "Jak vyhrát v ruletě". Pokud se vám nechce hledat, tak jej naleznete tady. Návod spočívá v tom, že si na začátek zvolíme nějakou částku, kterou budeme sázet. Například 100 Kč. Když prohrajeme, tak částku zdvojnásobíme a jsme na 200kč. Když prohrajeme, tak částku zas zdvojnásobíme a jsme na 400Kč. A hle! Vyhráli jsme. Jsme v plusu.
Když se budeme striktně držet návodu, budeme postupovat asi takto. Na začátku si zvolíme vsazenou částku. V našem případě to bude 10 jednotek. V algoritmu je vsazená částka v proměnné vsazenaCastka. A nyní budeme provádět stále dokola a dokola sázecí cyklus. Budeme sázet tak dlouho, dokud budeme mít alespoň těch 10 jednotek, které jsou potřeba k minimální sázce. Napíšeme si tedy cyklus, který bude vypadat takto.
while(hra.vratPenize() >= 10){
System.out.println("Vsadil jste "+vsazenaCastka);
if(hra.vsadNaBarvu(vsazenaCastka, "cervena")){
vsazenaCastka = 10;
}
else{
vsazenaCastka = vsazenaCastka*2;
}
System.out.println("A teď máte "+hra.vratPenize());
}
Cyklus nejdříve vypíše kolik sázíme a poté tuto částku vsadí. Podle návodu sázíme stále dokola na stejnou barvu, protože jedna barva nemůže padat do nekonečna. V případě výhry musíme vsadit znovu základní částku. V případě prohry vsadíme přesně dvojnásobek vsazené částky. Takto postupujeme stále dokola. Můj algoritmus rozšiřuje původní v tom, že pokud již nemůžeme vsadit tolik peněz, tak se znovu vrátíme k výchozí částce a pokusíme se začít znovu.
Dost bylo programování, jdeme z toho dostat nějaký závěr. Když necháte proběhnout tento algoritmus, zjistíte, že se dříve nebo později dostanete na nulu. Proč to tak je? Protože pravděpodobnost prostě pracuje. Z krátkodobého hlediska se vám bude velmi dařit a peníze budou pomalu přibývat. Dříve nebo později ale nastane situace, kdy nesprávná barva prostě padne vícekrát za sebou a vy se neustálým zdvojnásobováním vsazené částky dostanete na tak vysokou částku, že ji prostě nemůžete vsadit.

Došli jsme tedy k závěru, že tento návod je podvod a rozhodně jej nikdy nezkoušejte v praxi! Schválně si zkuste projít výsledný výpis algoritmu. Uvidíte že částka se bude slibně zvedat, a vy si budete myslet, že zkrátka nemůžete prohrát. Jak jsem ale napsal výše, pravděpodobnost začne fungovat a šance na prohru roste úměrně s počtem sázek.
Stáhnout
Stažením následujícího souboru souhlasíš s licenčními podmínkami
Staženo 66x (15.87 kB)
Aplikace je včetně zdrojových kódů
Komentáře


Zobrazeno 10 zpráv z 16. Zobrazit vše