Garantiert gewinnen beim Roulette (durch Software!)

So macher hofft, im Casino etwas gewinnen zu können. Betrachten wir also, mit welcher Methode wir das anstellen. Dazu muss ich etwas (aber nicht viel) ausholen.

Vor einigen Jahren war ich zu einer kleinen Tagung nach Lissabon eingeladen. Dem Hotel war ein Casino angeschlossen. Der Veranstalter der Tagung schenkte jedem Teilnehmer 50 Euro, mit dem wir unser Glück im Casino versuchen sollten.
Ich sah mir im Casino also die Roulette-Tische an (ohne Ahnung vom Roulettespielen) und überlegte, wie man beim Roulette gewinnen könnte, und kam auf eine Methode, die ich recht raffiniert fand – von der ich aber viel später erfuhr, dass sie vor mir schon längst jemand erfunden hatte (…mal wieder zu spät dran).

Die Methode nennt sich Martingale. Die Wikipedia schreibt dazu:

“Dieses scheinbar sichere System funktioniert aber nicht …” (Klar: Die Kugel hat kein Gedächtnis, etc…)

Das wusste ich damals aber nicht, spielte also nach dieser Methode, und ging mit 550 Euro wieder aus dem Casino hinaus (das macht übermütig!). Später war ich mit meiner Frau in Baden-Baden*, wollte das noch einmal versuchen, und verlor viel mehr, als ich in Lissabon gewonnen hatte. Ich weiss heute aber, warum ich dort verlor.

Das Martingalespiel geht so: Man spielt auf „einfache Chance“, also Rot/Schwarz, Gerade/Ungerade, hohe/niedrige Zahl.

Angenommen, ich meine, dass als nächstes “Rot kommt”. Setzte also 5€ auf Rot. Pech gehabt, Schwarz kommt. Also setze ich jetzt 10€ auf Rot. Pech gehabt: Schwarz kommt. Also setze ich 20 Euro auf Rot. Glück gehabt: Rot kommt. Ich bekomme meine Verluste zurück plus einen Gewinn von 5€.

Das Problem ist: Sollte, in diesem Beispiel, Rot zu lange auf sich warten lassen, wird mir mein Geld ausgehen oder ich werde den maximalen Einsatz überschreiten. In meinem Beispiel musste ich bereits 35€ riskieren, um 5€ zu gewinnen. Sollte Rot noch länger auf sich warten lassen, würde ich schnell mein Geld verlieren. Das tut man dagegen?

In Lissabon spielte ich anders: Ich wartete (nennen wir es “Wartezeit”) immer so lange, bis (z. B.) Schwarz fünf mal gekommen war, bevor ich auf Rot setze. Sollte jetzt Rot also erst beim 8. Mal kommen, würde ich das durchstehen können (was allerdings nichts nützt, wenn Rot erst beim 20. Mal kommt, was auch schon vorkam).
Und deshalb hatte ich in Baden-Baden viel Geld verloren: weil ich in Eile war (meine Frau wollte gehen). Meine Variante des Martingale braucht eben viel “Wartezeit”.

Wieviel Zeit denn? Und rechnet sich das überhaupt?

Um das herauszufinden, hätte ich testweise tagelang in Strážný spielen müssen (was ich nicht überlebt hätte: der Zigarettenqualm dort ist nur schwer erträglich), oder das Problem in Software simulieren. Also letzteres.

Um Zeit zu sparen, benutzte ich ein existierendes Stück Software (man beachte auch die dortige Diskussion zum Martingale) und erweiterte es für Rot/Schwarz, hohe/niedrige Zahl und für die “Wartezeit”. Das Programm ist in der Programmiersprache Python 3 für Linux geschrieben, sollte aber auch auf Windows und Mac laufen, sofern dort Python 3 installiert ist. Das Programm, ich nenne es roulette.py, wird von der Kommandozeile gestartet. Unter Linux also mit: python3 roulette.py.
(Falls Sie es verbessern – das würde ihm gut tun – oder erweitern, wäre es nett, wenn Sie es uns dann hier zur Verfügung stellten.)

Mit diesem Programm kann man einen kompletten Roulette-Abend in Sekundenschnelle bequem simulieren, um herauszufinden, ob und wie man mit dem Martingale gewinnen könnte.

Das Interessante dabei ist eben, dass man die “Wartezeit” angeben kann: Nach wievielen (z. B.) geraden Zahlen setze ich erst auf Ungerade. Außerdem kann man das verfügbare Geld und die Anzahl von Spielen vorgeben (mehr als 100 pro Abend sollte man wohl nicht einplanen – besonders dann nicht, wenn geraucht wird).

Ich habe einige Simulationen laufen lassen und kam zu diesem Ergebnis:

Falls man eine niedrige Wartezeit (z. B. „3“) angibt, ist das Risiko, das gesamte Geld zu verlieren, zu groß.
Falls man eine hohe Wartezeit (z. B. „8“) angibt, ist das Risiko zu verlieren viel geringer, man gewinnt aber auch sehr wenig, sitzt also viel zu lange im Casino herum – für wenig Ertrag. Außerdem ist das Risiko, alles zu verlieren, immer noch da. Hier ist ein Protokoll von einem Lauf, bei dem Rot 13 mal kam, und der Spieler, der nach 8 mal Rot auf Schwarz gesetzt hätte, trotzdem alles verloren hätte.

Wie man es auch dreht und wendet, selbst das Martingale, wohl die „vernünftigste“ Methode Roulette zu spielen, vernichtet entweder Geld oder viel Zeit – oder beides. Die Simulation zerschmettert  hier alle Illusionen. Mein Gewinn in Lissabon war nichts als ein Zufall.

Kommen wir also zur (etwas plakativen) Überschrift dieses Beitrages zurück.
Ja, ich konnte (zumindest für mich selbst) zeigen (durch Software!), dass man im Casino garantiert gewinnen kann: Indem man ihm fernbleibt, gewinnt man an Lebenszeit.


* Wohl kann ich dich zum Schokoladenladen laden,
Doch nicht mit dir in Baden-Baden baden.
Ich kann dir nicht, was andre schenken, schenken
Und nicht die Welt aus den Gelenken lenken.
Du darfst dich nicht auf Schmuck und Spitzen spitzen
Wirst nicht mit mir auf goldnen Sitzen sitzen,
Jedoch, der ich des Dichters Habe habe,
Vermag es, dass dich and’re Labe labe:
Schon fühl‘ ich es von Liederkeimen keimen,
Ich will sie dir in goldnen Reimen reimen,
Dass dir gar lieblich ihr Getöne töne,
Und dich der Verse Schmuck verschöne, Schöne.

Heinrich Seidel (1842-1906)


Hier das Programm. Viel Spass damit.

 

#!/usr/bin/python3

import random

print(" ")
games = input("Wieviele Spiele soll ich berechnen? (Falls keine Eingabe erfolgt, nehme ich 100 Spiele) ")
if (games==""):
	games =100
else:
	games=int(games)
print(games, " Spiele")
print(" ")

bet_amount = input("Wieviel soll jeweils gesetzt werden? (Falls keine Eingabe erfolgt, nehme ich 5 Euro) ")
if (bet_amount==""):
	bet_amount =5
else:
	bet_amount=int(bet_amount)
print("Einsatz jeweils ",bet_amount)
print(" ")

reihe = input("Wie lange soll ich warten, bevor ich setze? (Falls keine Eingabe erfolgt, nehme ich 5) ")
if (reihe==""):
	reihe =5
else:
	reihe=int(reihe)
print("Warte so viele Gleiche ab: ",reihe)
print(" ")

money = input("Wieviel Geld hat der Spieler mitgebracht (Falls keine Eingabe erfolgt, nehme ich 50 Euro) ")
if (money==""):
	money=50
else:
	money=int(money)
print("Spieler hat ", money," Euro dabei.")
print(" ")
print(" ")

nums = range(37)

currentbet1=bet_amount
currentbet2=bet_amount
currentbet3=bet_amount

evenodd_num= None
upperlower_num = None 
redblack_num= None

maxbet=10000        # Maximal Einsatz

next_bet1 = None
next_bet2 = None
next_bet3 = None

parity_in_row ={"odd":0, "even":0}
upperlower ={"upper":0, "lower":0}
redblack ={"red":0, "black":0}


red =[1,3,5,7,9,12,14,16,18,19,21,23,25,27,30,32,34,36]
black=[2,4,6,8,10,11,13,15,17,20,22,24,26,28,29,31,33,35]


for i in range(games):
    num = nums[random.randint(0,36)]


    if next_bet1 == "odd":
        if num % 2 == 1:
            money=money+currentbet1
            currentbet1=bet_amount 
            next_bet1 = None
        else:
            money=money-currentbet1
            currentbet1=2*currentbet1
            if (currentbet1 > maxbet):
                 print("---- Maximaler Einsatz überschritten ----")
                 games=99999
            
            
    elif (next_bet1 == "even"):
        if num % 2 == 0:
            money=money+currentbet1
            currentbet1=bet_amount 
            next_bet1 = None
        else:
            money=money-currentbet1
            currentbet1=2*currentbet1
            if (currentbet1 > maxbet):
                 print("---- Maximaler Einsatz überschritten ----")
                 games=99999
                 
    
    if next_bet2 == "upper":
        if num >18:
            money=money+currentbet2
            currentbet2=bet_amount
            next_bet2 = None
        else:
            money=money-currentbet2
            currentbet2=2*currentbet2
            if (currentbet2 > maxbet):
                 print("---- Maximaler Einsatz überschritten ----")
                 games=99999
            
            
    elif (next_bet2 == "lower"):
        if num < 19: money=money+currentbet2 currentbet2=bet_amount next_bet2 = None else: money=money-currentbet2 currentbet2=2*currentbet2 if (currentbet2 > maxbet):
                 print("---- Maximaler Einsatz überschritten ----")
                 games=99999            
                 
                 
                 
    if next_bet3 == "red":
        if num in red:
            money=money+currentbet3
            currentbet3=bet_amount
            next_bet3 = None
        else:
            money=money-currentbet3
            currentbet3=2*currentbet3
            if (currentbet3 > maxbet):
                 print("---- Maximaler Einsatz überschritten ----")
                 games=99999
            
            
    elif (next_bet3 == "black"):
        if num in black:
            money=money+currentbet3
            currentbet3=bet_amount
            next_bet3 = None
        else:
            money=money-currentbet3
            currentbet3=2*currentbet3
            if (currentbet3 > maxbet):
                 print("---- Maximaler Einsatz überschritten ----")
                 games=99999            


    if num > 0 and num % 2 == 0:
        parity_in_row["even"] += 1
        parity_in_row["odd"] = 0
        evenodd_num = "even"
    elif num % 2 == 1:
        evenodd_num = "odd"
        parity_in_row["odd"] += 1
        parity_in_row["even"] = 0
    else:
        parity_in_row ={"odd":0, "even":0}
        evenodd_num = None   
    if parity_in_row["odd"] >= reihe:
        next_bet1 = "even"
    elif parity_in_row["even"] >= reihe:
        next_bet1 = "odd"
    else:
        next_bet1 = None
        bet1=None
        
    if num > 18:
        upperlower["upper"] += 1
        upperlower["lower"] = 0
        upperlower_num = "upper"
    elif num > 0 and num < 19: upperlower["lower"] += 1 upperlower["upper"] = 0 upperlower_num = "lower" else: upperlower ={"upper":0, "lower":0} upperlower_num=None if upperlower["upper"] >= reihe:
        next_bet2 = "lower"
    elif upperlower["lower"] >= reihe:
        next_bet2 = "upper"
    else:
        next_bet2 = None
        bet2=None
   
    if num in red:
        redblack["red"] += 1
        redblack["black"] = 0
        redblack_num="red"
    elif num in black:
        redblack["black"] += 1
        redblack["red"] = 0
        redblack_num="black"
    else:
        redblack ={"red":0, "black":0}
        redblack_num=None
    if redblack["red"] >= reihe:
        next_bet3 = "black"
    elif redblack["black"] >= reihe:
        next_bet3 = "red"
    else:
        next_bet3 = None  


    print("---------------------------------------")
    print("Kugel fällt auf: ",num) 
    print ("Das bedeutet: Farbe ist ", redblack_num, " große/kleine Zahl ", upperlower_num, " gerade/ungerade ", evenodd_num)   
    print ("    ") 
  
    if (money<=0):
        print("################## Spieler hat kein Geld mehr ###################")
        break


    if (next_bet3 is not None):
        print ("Nächste Rot/Schwarz-Wette auf ", next_bet3, " mit Einsatz: ", currentbet3)
    
    if (next_bet2 is not None):
        print("Nächste große/kleine Zahl-Wette auf  ", next_bet2," mit Einsatz: ", currentbet2)

    if (next_bet1 is not None):
        print("Nächste Gerade/Ungerade-Wette auf ", next_bet1, " mit Einsatz: ", currentbet1)
    print ("    ") 
    print("Spieler besitzt derzeit", money, "Euro (inklusive dem Einsatz, der jetzt ggf. auf dem Tisch liegt)")



Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.