Testovanie algoritmu pre podvod s ruletou
Každý človek, ktorý sa pohybuje na internete, určite narazil na stránku, ktorá sa ho bude snažiť zlákať k stávkovanie v rulete a ukazovať mu šancu ako sa ľahko stať milionárom. Na túto stránku som narazil aj ja. Rozhodol som sa, že bez peňazí a riziká vyskúšam ako tento manuál funguje v praxi.
Spustiť si online ruletu a skúšať mi ale prišlo veľmi časovo náročné a preto som sa rozhodol, že si celý test naprogramuje.
Pre programovanie som sa rozhodol využiť programovací jazyk Java. Na výstup bude stačiť konzoly. Celý program bude značne zjednodušený a bude vedieť iba tento jeden experiment. Obsahuje ale určitú štruktúru a tak by nemal byť problém ho rozšíriť a použiť ďalej.
Trieda Ruleta, ktorá reprezentuje virtuálne ruletu, vyzerá 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 nasledovne. Vytvoríme si jej inštanciu. Pre zatočenie ruletou zavoláme metódu Zátoke (). Vygeneruje sa nám náhodne číslo v intervale <0; 36>, reprezentujúci jednu položku rulety. Metóda vsadNaBarvu () vracia true v prípade, že sme stavili na správnu farbu a false v prípade, že sme sa mýlili. Pre zjednodušenie som si určil, že čísla z intervalu <1; 18> budú červená a čísla z intervalu <19; 36> budú čierna. Nezodpovedá to síce pravidlám rulety, ale pravdepodobnosť zostáva rovnaká.
Trieda hra reprezentuje našu hru. Obsahuje inštanciu rulety a naše herné peniaze.
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; } }
Trieda obsahuje metódy vsadNaBarvu () a vratPenize ().
Metóda vsadNaBarvu () slúži na vsadenie sumy. Odovzdávame sumu, ktorú hodláme staviť a farbu. Metóda vracia true v prípade, že sme vyhrali a false v prípade, že sme prehrali. Metóda vracia true aj v prípade, že nemožno toľko peňazí staviť. Vysvetlím neskôr.
Metóda vratPenize () vracia naše imanie.
A ideme do finále. Hlavná trieda nášho projektu, Ruletatest, bude vykonávať 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 presne podľa návodu, ktorý môžete nájsť napríklad na Google po zadaní kľúčových slov "Ako vyhrať v rulete". Ak sa vám nechce hľadať, tak ho nájdete tu. Návod spočíva v tom, že si na začiatok zvolíme nejakú čiastku, ktorú budeme sadiť. Napríklad 100 Sk. Keď prehráme, tak čiastku zdvojnásobíme a sme na 200Kč. Keď prehráme, tak sumu zas zdvojnásobíme a sme na 400Kč. A hľa! Vyhrali sme. Sme v pluse.
Keď sa budeme striktne držať návodu, budeme postupovať asi takto. Na začiatku si zvolíme vsadenú čiastku. V našom prípade to bude 10 jednotiek. V algoritmu je vsadená čiastka v premennej vsazenaCastka. A teraz budeme vykonávať stále dokola a dokola sádzacie cyklus. Budeme sadiť tak dlho, kým budeme mať aspoň tých 10 jednotiek, ktoré sú potrebné k minimálnej stávke. Napíšeme si teda cyklus, ktorý bude vyzerať 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 najskôr vypíše koľko sadíme a potom túto sumu vsadí. Podľa návodu sadíme stále dookola na rovnakú farbu, pretože jedna farba nemôže padať do nekonečna. V prípade výhry musíme staviť znovu základnú čiastku. V prípade prehry vsadíme presne dvojnásobok vsadenej sumy. Takto postupujeme stále dokola. Môj algoritmus rozširuje pôvodné v tom, že ak už nemôžeme staviť toľko peňazí, tak sa znovu vrátime k východiskovej sume a pokúsime sa začať znovu.
Dosť bolo programovanie, ideme z toho dostať nejaký záver. Keď necháte prebehnúť tento algoritmus, zistíte, že sa skôr alebo neskôr dostanete na nulu. Prečo to tak je? Pretože pravdepodobnosť jednoducho pracuje. Z krátkodobého hľadiska sa vám bude veľmi dariť a peniaze budú pomaly pribúdať. Skôr alebo neskôr ale nastane situácia, keď nesprávna farba jednoducho padne viackrát za sebou a vy sa neustálym zdvojnásobovaním vsadenej sumy dostanete na tak vysokú čiastku, že ju jednoducho nemôžete staviť.
Došli sme teda k záveru, že tento návod je podvod a rozhodne ho nikdy neskúšajte v praxi! Schválne si skúste prejsť výsledný výpis algoritmu. Uvidíte že suma sa bude sľubne dvíhať, a vy si budete myslieť, že skrátka nemôžete prehrať. Ako som ale napísal vyššie, pravdepodobnosť začne fungovať a šanca na prehru rastie úmerne s počtom stávok.
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 79x (18.52 kB)
Aplikácia je vrátane zdrojových kódov