MuPAD Education Group: Kostenlose Materialen für MuPAD Pro:
www.sciface.com/education, schule.mupad.de, studium.mupad.de, mupad.zum.de.

_____________________________________________________________________________________

 

Inhalt....: Anhang Roulettestrategien

Kategorie.: Arbeitsblatt

Mathematik: Stochastik, Programmierung

MuPAD.....: 3.1.0

Datum.....: 2005-07-04

Autoren...: Thorsten Fraas <thorstenfraas@gmx.de>

Funktionen: contains, for, has, if, local, begin, proc, random, op

Funktionen: plot::Polygon2d, plot

_____________________________________________________________________________________

 

Empirische Untersuchung von Roulettestrategien V

 

Zur Einführung bitte die Einleitung in Notebook "roulette1.mnb" lesen.

 

Dieses Notebook beschäftigt sich (wie schon in den Notebooks "roulette1.mnb"

und "roulette2.mnb" angesprochen) mit der Programmierung der Einfachen

Martingalstrategie und der Supermartingalstrategie.

Es unterscheidet sich von Notebook "roulette2.mnb" darin, dass hier in die Pro-

zeduren der beiden Strategien eine Sonderregel für das Verhalten beim Erscheinen

der Null integriert wurde.

Der Spieler erhält beim Setzen auf die Einfachen Chancen nämlich die Hälfte seines

Einsatzes zurück, wenn die Null auftaucht.

 

Dem interessierten Leser bleibt es überlassen, diese Sonderregel in die Prozeduren

der übrigen Strategien zu integrieren, um das Roulettespiel 100%ig zu modellieren.

 

Aufbau dieses Notebooks:

1. Progressionsspiele

  a) Einfache Martingalstrategie

  b) Supermartingalstrategie

 

 

1. Progressionsspiele

 

a) Einfache Martingalstrategie

 

Es soll die bekannte Verdoppelungsstrategie beim Roulette - auch Einfache Martingalstrategie

genannt - empirisch untersucht werden. Die Strategie sieht folgendermaßen aus:

Der Spieler beginnt mit KG Euro und setzt m Euro auf die Einfachen Chancen (Rot oder Schwarz,

Gerade oder Ungerade, Manque (Zahlen 1-18) oder Passe (Zahlen 19-36)).

Beim Auftreten der Null gibt es eine Sonderregel: Der Spieler erhält die Hälfte seines Einsatzes

zurück. Wenn der Spieler gewinnt, legt er den gewonnen Euro zu seinem Kapital und spielt weiter.

Falls der Spieler verliert, setzt er den doppelten Betrag des vorhergehenden Einsatzes ein.

Damit hofft er, eine Verlustserie mit einem Gewinn auszugleichen und sogar noch einen Euro

zu gewinnen.

Ein möglicher Spielverlauf könnte also sein:

 

1. Spiel: 1 Euro gesetzt - verloren

2. Spiel: 2 Euro gesetzt - verloren

3. Spiel: 4 Euro gesetzt - verloren

4. Spiel: 8 Euro gesetzt - gewonnen.

 

Diese stufenweise Steigerung der Satzhöhe nennt man Progression. Da sich die Steigerung

immer auf das vorher verlorene Spiel bezieht, ist diese Art der Strategie eine Verlustprogression.

Die Steigerung endet mit einem gewonnen Spiel und beginnt dann wieder von vorne, d.h., dass

dann ein neuer Progressionslauf beginnt.  In unserem Beispiel hatte der Spieler vor dem 4. Spiel

insgesamt 7 Euro verloren, nun gewinnt er nach dem 4. Spiel auf einen Schlag 8 Euro und hat

insgesamt einen Euro gewonnen.  Dies hört sich gut an, doch in der Strategie verbergen sich

Gefahren. Diese Gefahren sollen deutlich gemacht werden.

 

Zuerst die Prozedur: Wir simulieren stellvertretend für alle Einfachen Chancen das Setzen

auf gerade Zahlen.

 

martingal:=proc(n,KG,m)

local K,S,i,Z,A,Kapital,l,Bild;

begin

K:=[KG, 0 $ n]://Gesamtkapital vor dem

               //Spiel und jeweils nach j Spielen, j=1..n

S:=[m, 0 $ n-1]://Einsatz in den n Spielen

Z:=[0 $ n]://Zahlen, die in den n Spielen fallen

A:=[[0 $ 4] $ n]:

Z[1]:=random(0..36)():

  if Z[1] mod 2=0 and Z[1]>0

   then K[2]:=K[1]+S[1]: S[2]:=S[1]:

    /*im Fall von Gewinn setzt man bei

      dieser Strategie immer das gleiche

      wie im vorangegangenen Spiel*/

  elif Z[1] mod 2=1

    then K[2]:=K[1]-S[1]: S[2]:=2*S[1]:

    /*im Fall von Verlust setzt man immer

      das Doppelte des Vorangegangenen*/

  else K[2]:=K[1]-S[1]/2: S[2]:=S[1]/2:

    /*im Fall der Null setzt man die Hälfte dessen, was man

      vorher gesetzt hat*/

  end_if:

  

  for i from 2 to n-1 do

  Z[i]:=random(0..36)():

     if Z[i] mod 2=0 and Z[i]>0 then

       K[i+1]:=K[i]+S[i]:

       S[i+1]:=S[1]:

     elif Z[i] mod 2=1 then

       K[i+1]:=K[i]-S[i]:

       S[i+1]:=2*S[i]:

     else K[i+1]:=K[i]-S[i]/2: S[i+1]:=S[i]/2

     end_if:

  end_for:

Z[n]:=random(0..36)():

  if Z[n] mod 2=0 and Z[n]>0 then K[n+1]:=K[n]+S[n]:

  elif Z[n] mod 2=1 then K[n+1]:=K[n]-S[n]:

  else K[n+1]:=K[n]-S[n]/2:

  end_if:

return(K);

end_proc:

 

 

Nun gibt man an, wie viele Spiele man spielen und mit welchem Anfangsbetrag man starten will

Die folgende Liste gibt die Spielstände an, wenn 10 Spiele gemacht werden, der Spieler

mit 50 Euro beginnt und sein Starteinsatz immer 1 Euro ist.

 

martingal(10,50,1)

math

Die folgende Grafik verdeutlicht den Spielverlauf nach 100 Spielen mit einem Anfangsbetrag von

50 Euro anschaulich.

Man gewinnt auf Dauer ungefähr in jedem zweiten Spiel einen Euro, aber eine längere Verlustserie

ruiniert den Spieler (abhängig vom Starteinsatz).

Dazu im Folgenden mehr.

 

kurve1:=martingal(100,50,1):

Punkte1:=[n,kurve1[n]]$n=1..100:

plot(plot::Polygon2d([Punkte1],

     AxesTitles=["Spiel","Kontostand"]));

MuPAD graphics

Wir sehen an dem obigen Beispiel, dass man nach 100 Spielen mit einem Anfangsbetrag von

50 Euro ungefähr 100 Euro in der Tasche hat.

 

Nun ist es interessant zu betrachten, was geschieht, wenn das Tischminimum nicht 1 Euro,

sondern m Euro ist. Schließlich existieren in Deutschland Tische mit 2,5,10, 20 und auch

50 Euro Tischminimum.

Als Beispiel wählen wir einmal 5 Euro Minimum:

 

martingal(10,50,5)

math

Auch diese Werte wollen wir einmal graphisch veranschaulichen. Je größer das Tischminimum,

desto größer werden natürlich auch die Ausschläge der Kurve, weil durch das Verdoppeln die

Einsätze schneller anwachsen.

 

kurve2:=martingal(100,50,5):

Punkte2:=[n,kurve2[n]]$n=1..100:

plot(plot::Polygon2d([Punkte2],

     AxesTitles=["Spiel","Kontostand"]));

MuPAD graphics

Der Leser beachte die Ausschläge unter die x-Achse.

Das Spiel wäre natürlich bereits nach dem ersten Erreichen der x-Achse beendet, weil der

Spieler bankrott wäre.

 

 

 

b) Supermartingalstrategie

 

Die Supermartingalstrategie ist eine Abwandlung der Einfachen Martingalstrategie.

Das Progressionsschema der Supermartingale verläuft steiler als das der Einfachen

Martingale: 1-3-7-15-31-63-127-255-511-1023.

Der vorhergehende Einsatz wird verdoppelt und eine Satzeinheit wird noch addiert.

Ansonsten sind die Regeln die Gleichen, wie bei der Einfachen Martingalstrategie

Wir wollen diese Strategie gleich mit einem beliebigen Tischminimum m simulieren:

 

supermartingal:=proc(n,KG,m)

local K,S,Z,i;

begin

K:=[KG, 0 $ n]://Gesamtkapital vor dem Spiel

               //und jeweils nach j Spielen, j=1..n

S:=[m, 0 $ n-1]://Einsatz in den n Spielen

Z:=[0 $ n]://Zahlen, die in den n Spielen fallen

Z[1]:=random(0..36)():

  if Z[1] mod 2=0 and Z[1]>0

   then K[2]:=K[1]+S[1]: S[2]:=S[1]:

    /*im Fall von Gewinn setzt man bei

      dieser Strategie immer das gleiche

      wie im vorangegangenen Spiel*/

  elif Z[1] mod 2=1

   then K[2]:=K[1]-S[1]: S[2]:=2*S[1]+m:

    /*im Fall von Verlust setzt man immer

      das Doppelte des Vorangegangenen zuzüglich

      einer Satzeinheit*/

  else K[2]:=K[1]-S[1]/2: S[2]:=S[1]/2:

    /*im Fall der Null setzt man die Hälfte dessen, was man

      vorher gesetzt hat*/

  end_if:

  

  for i from 2 to n-1 do

  Z[i]:=random(0..36)():

     if Z[i] mod 2=0 and Z[i]>0 then

       K[i+1]:=K[i]+S[i]: S[i+1]:=S[1]:

     elif Z[i] mod 2=1 then

       K[i+1]:=K[i]-S[i]: S[i+1]:=2*S[i]+m:

     else K[i+1]:=K[i]-S[i]/2: S[i+1]:=S[i]/2

     end_if:

     if S[i+1]>=K[i+1] then print("Bankrott vor Spielende");

       break:

     end_if;

  end_for:

Z[n]:=random(0..36)():

  if Z[n] mod 2=0 and Z[n]>0 then K[n+1]:=K[n]+S[n]:

  elif Z[n] mod 2=1 then K[n+1]:=K[n]-S[n]:

  else K[n+1]:=K[n]-S[n]/2:

  end_if:

return(K);

end_proc:

 

 

Bei der Programmierung haben wir dieses Mal berücksichtigt, dass der Spieler aufhören muss

zu spielen, wenn er kein Geld mehr hat, der Einsatz also größer als das Kapital wird.

 

supermartingal(10,50,2)

math

kurve3:=supermartingal(100,500,2):

Punkte3:=[n,kurve3[n]]$n=1..100:

plot(plot::Polygon2d([Punkte3],

     AxesTitles=["Spiel","Kontostand"]));

"Bankrott vor Spielende"

MuPAD graphics

Wir sehen: Die Kurve verläuft wesentlich steiler als bei der Einfachen Martingalstrategie. Der

Spieler kann im Schnitt pro Spiel mit 2 gewonnen Satzeinheiten rechnen, durch die hohen

Einsätze allerdings auch mit einer höheren Wahrscheinlichkeit für größere Verluste, die ihn

schneller in den Bankrott bringen können.

 

_______________________________________________________________

 

Anmerkungen:

1.  Weitere Anregungen zum Einsatz von MuPAD in der Lehre finden Sie auf unserem WebPortal

     MuPAD in Schule und Studium unter: http://schule.mupad.de bzw. http://studium.mupad.de.

 

2. Mathematische Formeln in diesem Notebook stammen aus der Examensarbeit

   "Roulette - Theorie und Simulation eines Glücksspiels", die vom Autor im Rahmen

   der Ersten Staatsprüfung für das Lehramt an Gymnasien im Jahr 2004 am

   Institut für Mathematische Stochastik an der Georg-August Universität in  

   Göttingen angefertigt wurde. Die programmierten Roulettestrategien wurden im

   Rahmen dieser Arbeit ebenfalls mathematisch untersucht.

   Der interessierte Leser sei darauf verwiesen. Entsprechende Teile der Arbeit

   können gerne auf Anfrage beim Autor angefordert werden.

_______________________________________________________________________________

 

 

MuPAD Education Group: Kostenlose Materialen für MuPAD Pro:
www.sciface.com/education, schule.mupad.de, studium.mupad.de, mupad.zum.de.