AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Roulette-Strategie-Simulator

Offene Frage von "Der Siedler"
Ein Thema von Der Siedler · begonnen am 1. Jul 2013 · letzter Beitrag vom 3. Jul 2013
Antwort Antwort
Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#1

AW: Roulette-Strategie-Simulator

  Alt 2. Jul 2013, 17:17
Hallo,

ich vermute mal, dass Dein Problem mit Endlosschleifen hier liegt:
Delphi-Quellcode:
procedure TfMasseEgale.Manquespiel;
var
  aGewinnziel : real;
begin
  aGewinnziel := aGewinn + 1;
  while aGewinn < aGewinnziel do
    Wurf('Manque')
end;
bzw.
Delphi-Quellcode:
procedure TfMasseEgale.Passespiel;
var
  aGewinnziel : real;
begin
  aGewinnziel := aGewinn + 1;
  while aGewinn < aGewinnziel do
    Wurf('Passe')
end;
Annahme: Der Aufruf von Stueckgewinn erfolgt über btStartClick und die Bedingung |aManque - aPasse| < 5 ist irgendwann erfüllt. Die while Schleife wird verlassen und es erfolgt der Aufruf von Passespiel (oder Manquespiel was aufs selbe rausläuft). Dann ist aGewinn zunächst 0. Nun wird Wurf ('Passe') mindestens einmal aufgerufen. Ist Dir das Glück nicht hold, kommen häufiger die Zahlen 0..18 und aus Deinem Gewinn wird bald ein ordentlicher Verlust (und aGewinn < aGewinnziel bleibt erfüllt). Selbst wenn gelegentlich die Kugel im Bereich 19..36 zu liegen kommt, erhöhst Du den Gewinn immer nur um Eins (pWette = Passe damit ist pWette <> 'Keine Wette' immer erfüllt).
Ändere mal Deine Wurf Methode ab:
Delphi-Quellcode:
procedure TfMasseEgale.Wurf (pWette : string);
begin
  a := Random(37);
  case a of
    0 : begin
               aZero := aZero + 1;
               if pWette <> 'Keine Wette'
                 then aGewinn := aGewinn - 0.5;
             end;
    1..18 : begin
               aManque := aManque + 1;
               if pWette = 'Manque'
                 then aGewinn := aGewinn + 2
               else
                 if pWette <> 'Keine Wette'
                   then aGewinn := aGewinn - 1
             end;
    19..36 : begin
               aPasse := aPasse + 1;
               if pWette = 'Passe'
                 then aGewinn := aGewinn + 2
               else
                 if pWette <> 'Keine Wette'
                   then aGewinn := aGewinn - 1
             end;
  end;
  i := i + 1;
  if aGewinn < aMinus
    then aMinus := aGewinn;
end;
und nutze aMinus als zusätzliche Abbruchbedingung, wenn eine bestimmte Schranke unterschritten wird.

Gruß
Volker Zeller
  Mit Zitat antworten Zitat
Der Siedler

Registriert seit: 1. Jul 2013
9 Beiträge
 
#2

AW: Roulette-Strategie-Simulator

  Alt 2. Jul 2013, 23:11
@Volker: Das Problem dabei ist, dass dafür nicht eine bestimmte Schranke von aMinus unterschritten werden muss. Es kann sich auch konstant bei 10 Abweichung einpendeln und nie auf 4 fallen. Somit würde das ganze auch gefühlt ewig laufen, obwohl aMinus gar nicht sonderlich unüberschaubar wird.

@Jumpy: Doch, diese Ungleichverteilung kommt vor. Nur kommt es eben manchmal auch vor, dass das Ganze sich nicht wieder auf ein normales Niveau einpendelt. Es wird aber durchaus das Manque-/Passespiel aufgerufen, das haben zahlreiche Testläufe gezeigt.

Trotzdem Danke für eure Ideen! Das, was Volker da als Annahme schreibt, wird wohl wirklich das Problem sein. Nur frage ich mich, wieso... Gibt es in Delphi irgendeine bekannte Grenze von Nicht-Zähl-Schleifen, sprich in puncto Durchläufe? Ich kann mir keine andere Möglichkeit vorstellen. Aber wie könnte man das umgehen? Vielleicht eine while-Schleife nur 1000 Mal laufen lassen und dann wiederholen. Aber das wäre lächerlich und alles andere als elegant.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz