Hallo,
Die Auswertung war tatsächlich fehlerhaft. Wurde zusammen mit dem Einrücken verbessert.
Hier das verbesserte Programm:
Delphi-Quellcode:
var
Form1: TForm1;
x,a,b,c:integer;
Einsatz : integer;
Gewinn : integer;
Zaehler : integer;
Check:Integer;
fortschritt:integer;
i:integer;
//Tabelle : Array[0..10, 0..20] of integer;
//Anzahl:Integer;
//Menge:Integer;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
x:=random(37);
lbzufallszahl.caption := inttostr(x);
//rbGerade.checked := true;
c:=c+1;
if x = 0 then // ##################BANK######################
begin
lbAuswertung.caption := 'Die Bank hat gewonnen!';
i:=Random(2);
if i = 0 then
begin
Gewinn := Gewinn-Einsatz;
end
else
if i = 1 then
begin
Gewinn := Gewinn + Einsatz;
end;
end
else
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
else
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;
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);
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.
Falls ihr noch weitere Fehler findet, immer nur her damit. (:
Ansonsten sollte das Programm jetzt ein Roulette Spiel simulieren, indem der Minimaleinsatz bei 2 Euro liegt und der Maximaleinsatz bei 1000, wodurch es möglich ist, den Einsatz 9x zu verdoppeln. Bei einer 0 wird erneut gedreht und die Chance steht 50:50, dass man den Einsatz zurück erhält.
Das bringt mich erneut zu meinem "
Unsinn":
Zitat:
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
Bei den Bedingungen nach denen wir oben gehen, merkst du glaube ich selbst, wer da Unsinn geschrieben hat. Außerdem habe ich schon mindestens einmal geschrieben, dass ich die Theorie weder verteidigen möchte noch denke, dass es ein Casino gibt, in dem sowas klappen würde. Desweiteren war meine Brechnung als Frage formuliert, weil ich mir wie gesagt nicht sicher war.
Die Wahrscheinlichkeit 1 Spiel zu verlireten beträgt: exakt 50%
Die Wahrscheinlichkeit 9 Spiele zu verlieren beträgt: (1 / 2)^9 = 0,001953125%
(0,998046875 * 2) - (0,001953125% * 1022) = 1,97613281
Falls ich mich nicht irre haben wir also nach den obrigen Bedingungen eine positive Gewinnerwartung. Das es kein Casino gibt, in dem man nach genau den Bedingungen spielen kann, mag stimmen.
Bei 32.000 Durchläufen mit meinem Programm bekomme ich auch eine positive Zahl raus.
Vielen Dank für die vielen Verbesserungen und Anregungen.
lg
LPIG
Edit:
bei 10.000.000 Versuchen bekomme ich -80.000 Euro, irgendwo muss ich was falsch gemacht haben.