![]() |
AW: Zufallszahlen erstellen
Zitat:
Wenn nämlich "genau so viele Durchläufe stattgefunden haben wie es Pixel gibt" und dann "theoretisch" "alles schwarz" sein müsste, dann hätte "der Generator jeden der Pixel erwischt". Ach egal. |
AW: Zufallszahlen erstellen
Die Roulette-Strategie des Verdoppelns bis man gewinnt ist "Quark".
10 Euro gesetzt -> verloren 20 Euro -> verloren 40 Euro -> verloren 80 Euro -> verloren 160 Euro -> gewonnen!! Verlust: 10+20+40+80=150 Euro Gewinn:160 Euro Nettogewinn: 10 Euro (also der 1. Einsatz) Wenn man also max. den 1. Einsatz gewinnen kann, muss man diesen erhöhen denkt sich der "schlaue" Roulettespieler: 1000 -> gewonnen (Hurra) 1000 -> gewonnen (Glücksträhne, schon 2000 im Plus) 1000 -> verloren 2000 -> verloren 4000 -> verloren 8000 -> verloren 16000 ?? Ohoooh - das Geld reicht nicht mehr und schon 13000 verpulvert. Und jetzt kommen auch noch zwei Rausschmeiser und sagen es wäre jetzt besser wenn man geht. |
AW: Zufallszahlen erstellen
Zitat:
lg LPIG |
AW: Zufallszahlen erstellen
Zitat:
Delphi-Quellcode:
// liefert den Nettogewinn oder Verlust für eine Spielserie
function PlayRoulette(einsatz, maxeinsatz:Currency):Currency; var win : Boolean; begin Result := 0; repeat win := random(33) < 16; if win then begin Result := Result + einsatz; Exit; end; Result := Result - einsatz; einsatz := einsatz * 2; // verdoppeln... until win or (einsatz > maxeinsatz); // bis zum Gewinn oder bis das Limit überschritten ist end; |
AW: Zufallszahlen erstellen
Hast du auch wieder Recht, hier der Quellcode:
Delphi-Quellcode:
Ist bestimmt etwas umständlicher und so, aber wie gesagt, ich bin blutiger Anfänger! (;
var
Form1: TForm1; x,a,b,c:integer; Einsatz : integer; Gewinn : integer; Zaehler : integer; Check:Integer; fortschritt:integer; //Tabelle : Array[0..10, 0..20] of integer; //Anzahl:Integer; //Menge:Integer; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin //randomize; x:=random(32); lbzufallszahl.caption := inttostr(x); //rbGerade.checked := true; c:=c+1; if x Mod 2 = 0 then //##################GERADE##################### begin lbAuswertung.caption := 'Es handelt sich um eine GERADE Zahl!'; If rbGerade.checked = true then //Gewonnen begin Gewinn := Gewinn + Einsatz; lbAuswertung.caption := 'Es handelt sich um eine GERADE Zahl! Sie haben '+inttostr(Einsatz)+' Euro gewonnen'; end; If rbUngerade.checked = true then //Verlooooren begin lbAuswertung.caption := 'Es handelt sich um eine GERADE Zahl! Sie haben '+inttostr(Einsatz)+' Euro verloren'; Gewinn := Gewinn - Einsatz; end; end; If x Mod 2 > 0 then // ###################UNGERADE################ begin lbAuswertung.Caption := 'Es handelt sich um eine UNGERADE Zahl!'; If rbGerade.checked = true then //Verloooren begin lbAuswertung.caption := 'Es handelt sich um eine UNGERADE Zahl! Sie haben '+inttostr(Einsatz)+' Euro verloren'; Gewinn := Gewinn - Einsatz; end; If rbUngerade.checked = true then //Gewonnen begin lbAuswertung.caption := 'Es handelt sich um eine UNGERADE Zahl! Sie haben '+inttostr(Einsatz)+' Euro gewonnen'; Gewinn := Gewinn + Einsatz; end; end; if x = 0 then // ##################BANK###################### begin lbAuswertung.caption := 'Die Bank hat gewonnen!'; Gewinn := Gewinn-Einsatz; // Es spielt keine Rolle, man hat immer verloren! end; lbGewinn.caption := inttostr(gewinn); lbVersuche.caption := inttostr(c); end; procedure TForm1.FormCreate(Sender: TObject); begin randomize; //Anzahl:=0; //Menge := 0; Check:=1; c:=0; Einsatz := 2; Gewinn := 0; end; procedure TForm1.edEinsatzChange(Sender: TObject); begin If edEinsatz.text = '' then begin edEinsatz.text := '2'; end; Einsatz := strtoint(edEinsatz.text); end; procedure TForm1.btComputerClick(Sender: TObject); var h : integer; begin Fortschritt:=strtoint(edVersuche.text);// Damit die Fortschrittsanzeige funktioniert. Die Zahl brauch ich bestimmmt noch. for check:=1 to strtoint(edVersuche.text) do begin Zaehler := strtoint(edVersuche.text); rbGerade.checked := true; a := Gewinn; Button1Click(Sender); //Wie spielen auf Gerade ProgressBar1.max := Fortschritt; ProgressBar1.position := check; If Gewinn < a then // Wir haben verloren begin Einsatz := Einsatz*2; b := 2; {Anzahl := Anzahl+1; if Anzahl > 4 then begin Tabelle[Anzahl,Menge] := Anzahl; end; } end; If (Gewinn > a) and (b = 2) then //Wir haben gewonnen und davor verloren begin b:=1; Einsatz:=2; end; If Einsatz > 1000 then //Das Limit ist erreicht begin Einsatz := Einsatz DIV 2 ; end; edEinsatz.text := inttostr(Einsatz); if h>=1 then begin h:=h-1; btComputerClick(Sender); end; end; end; procedure TForm1.btZurueckClick(Sender: TObject); begin c:=0; lbversuche.caption := ''; end; procedure TForm1.edVersucheChange(Sender: TObject); begin If edVersuche.text = '' then begin edVersuche.text := '1'; end; end; procedure TForm1.btBilanzbackClick(Sender: TObject); begin gewinn:=0; lbgewinn.caption:=''; end; procedure TForm1.Button2Click(Sender: TObject); begin close; end; end. lg LPIG |
AW: Zufallszahlen erstellen
Zitat:
Oder was sollen solche Sachen? Wer soll das lesen, ohne einen Knoten im Hirn zu bekommen? :stupid:
Delphi-Quellcode:
edEinsatz.text := inttostr(Einsatz);
if h>=1 then begin h:=h-1; btComputerClick(Sender); end; end; end; procedure TForm1.btZurueckClick(Sender: TObject); begin c:=0; lbversuche.caption := ''; end; procedure TForm1.edVersucheChange(Sender: TObject); begin If edVersuche.text = '' then begin edVersuche.text := '1'; end; end; procedure TForm1.btBilanzbackClick(Sender: TObject); begin gewinn:=0; lbgewinn.caption:=''; end; procedure TForm1.Button2Click(Sender: TObject); begin close; end; |
AW: Zufallszahlen erstellen
Zitat:
Zitat:
Delphi-Quellcode:
um den Generator zu initialisieren und dann
Randomize
Delphi-Quellcode:
.
Random(32)
So sollte es funktionieren ![]() und der Eintrag aus der OH: Zitat:
![]() Gruß K-H |
AW: Zufallszahlen erstellen
Deine Auswertung ist falsch.
Zuerst muss geprüft werden ob die Bank gewonnen hat. Erst danach darf man prüfen, ob die Zahl gerade oder ungerade war:
Delphi-Quellcode:
Man beachte, dass bei der Abfrage immer
x:=random(33); // liefert 0 .. 32
if x=0 then begin // Bank gewinnt end else if Odd(x) then begin // ungerade Zahl end else begin // gerade Zahl end;
Delphi-Quellcode:
verwendet wird.
else
Lnagfristig macht dieses kleine Ungleichgewicht zu Gunsten der Bank einen grossen Unterschied!! |
AW: Zufallszahlen erstellen
Da würde es dann programmiertechnisch nogar noch interessant die Sperrregel umzusetzen - unmittelbarer Einzug der einfachen Chancen bei 0 wird imho nur in den USA gemacht :)
|
AW: Zufallszahlen erstellen
Also nochmal kurz zu deinem Satz:
Zitat:
Martingale Strategie – vorprogrammierter Totalverlust Es kommt nicht darauf an, wie hoch die Warscheinlichkeit beim Glücksspiel für den Gewinn einer Runde ist...... Was du rechnest ist total daneben. Dann gibt es noch die Zahll Null, die weder rot noch schwarz ist, bei der du immer verlierst. Es gibt also 37 Zahlen und bei 19 davon verlierst du. Die Wahrscheinlichkeit 1 Spiel zu verlieren beträgt: ca 51% = (19 / 37) Die Wahrscheinlichkeit 10 Spiele in Folge zu verlieren: 0,001275025...% = (19 / 37) ^ 10 Es ist also herrlich unwarscheinlich 10 Spiele in Folge zu verlieren. Weil man ja ein Martingale über 10 Spiele zu 1 - (19 / 37) ^ 10 sprich 0,99872497479...% gewinnt. Leider bringt dir diese hohe Gewinnrate nichts, weil es um den Erwartungswert geht. Du vernachlässigst, dass du dein Einsatz exponentiel erhöhst um weiterspielen zu könnten. Angenommen du spielst dein Martingale "nach dem System so gut wie möglich", das heißt: Möglichst geringen Starteinsatz, damit du möglichst oft verdoppeln kannst. In der Realität haben Casions einen maximal zugelassenen Betrag pro Feld. Angenommen dieser liegt bei 2000€, dann kannst du bei einem Starteinsatz von 1€ genau 10 mal verdoppeln (1024€, die nächste Verdopplung wäre unzulässig), bis du gegen dein System verstoßen musst, weil die Regeln kein Verdoppeln mehr erlauben. Mathematisch bedeutet das: (Gewinnwarscheinlihckeit * Einsatz) - (Verlustwarscheinlichkeit * Verlust) = Erwartungswert 0,99872497479...% * 1€ Einsatz - 0,001275025...% * 1024€ Verlust = 99,9023% - 1 = -0,30690062521 € Das sind ca 31% von deinem Starteinsatz, die du pro Serie verlierst. Also setz dich gemütlich an den Roulette Tisch und verzocke pro 12 Spiele brav deine 30 Cent und alle sind Glücklich. Da gibt es allerdings einige Spiele die du länger Spielen kannst mit deinem Geld... Das Spiel stellt sich dann so dar, dass du oft sehr kleine Gewinne einfährst und dann schlagartig alles verlierst. Wenn das Casino noch besser für dein "System" ist kannst du vielleicht schon bei 10 Cent starten und vielleicht 16 mal verdoppeln... Aber wie du dir ausrechnen kannst, bleibt dein zu erwartender Gewinn stets negativ. Ich hoffe du schreibst jetzt nicht nochmal so einen Unsinn... Falls du jedoch nach deinen eigenen Kalkulationen zu einem anderen Ergebniss kommen solltest, sags mir auf jeden Fall, ich stelle dann den Casinotisch und mache dir die Bank. Grüße Edit: In dem Zusammenhang könnte man auch kurz noch den ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:52 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