AGB  ·  Datenschutz  ·  Impressum  







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

Zufallszahlen erstellen

Ein Thema von LPIG · begonnen am 7. Nov 2012 · letzter Beitrag vom 14. Nov 2012
Antwort Antwort
Seite 2 von 3     12 3      
Furtbichler
(Gast)

n/a Beiträge
 
#11

AW: Zufallszahlen erstellen

  Alt 8. Nov 2012, 17:52
Die Behauptung 'alles schwarz => guter Generator' ist falsch.
Ich denke der Satz ist missverstanden worden. "Theoretisch müsste alles schwarz sein" bezog sich darauf, dass genau so viele Durchläufe stattgefunden haben wie es Pixel gibt. Nicht drauf ob der Generator jeden der Pixel erwischt hat.
Ja. Genau dann wäre es sehr unwahrscheinlich, wenn alles schwarz wäre.
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.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#12

AW: Zufallszahlen erstellen

  Alt 8. Nov 2012, 17:55
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.
Andreas
  Mit Zitat antworten Zitat
LPIG

Registriert seit: 7. Nov 2012
5 Beiträge
 
#13

AW: Zufallszahlen erstellen

  Alt 8. Nov 2012, 18:38
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.
Das mag ja stimmen, ich möchte das taktische Roulette hier auf keinen Fall verfechten, mir geht es eigentlich nur um die Lösung für mein Problem mit Delphi. (;

lg
LPIG
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#14

AW: Zufallszahlen erstellen

  Alt 8. Nov 2012, 18:59
mir geht es eigentlich nur um die Lösung für mein Problem mit Delphi.
Du hast bislang aber noch keinen Sourcecode gezeigt sondern nur bezüglich randomize herumtheoretisiert.

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;
Andreas
  Mit Zitat antworten Zitat
LPIG

Registriert seit: 7. Nov 2012
5 Beiträge
 
#15

AW: Zufallszahlen erstellen

  Alt 8. Nov 2012, 19:25
Hast du auch wieder Recht, hier der Quellcode:

Delphi-Quellcode:
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.
Ist bestimmt etwas umständlicher und so, aber wie gesagt, ich bin blutiger Anfänger! (;

lg
LPIG
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#16

AW: Zufallszahlen erstellen

  Alt 8. Nov 2012, 22:03
Ist bestimmt etwas umständlicher und so, aber wie gesagt, ich bin blutiger Anfänger! (;
Ich verstehe nicht, warum "Anfänger" scheinbar immer gleichbedeutend mit "keine Einrückung" ist.

Oder was sollen solche Sachen? Wer soll das lesen, ohne einen Knoten im Hirn zu bekommen?

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;
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#17

AW: Zufallszahlen erstellen

  Alt 9. Nov 2012, 12:35
Ich habe Randomize jetzt zweimal hingeschrieben, bin mir aber unsicher, was es nun bewirkt.
aber vorher warst Du Dir sicher?
Wie bekomme ich eine wirklich zufällige Zahlenreihenfolge hin?
Einmal Randomize um den Generator zu initialisieren und dann Random(32) .

So sollte es funktionieren
Ein Beispiel
und der Eintrag aus der OH:
Zitat:
Randomize initialisiert den integrierten Zufallszahlengenerator mit einem zufälligen Wert (der aus der Systemzeit abgeleitet wird). Der Zufallszahlengenerator sollte initialisiert werden, indem die Prozedur Randomize aufgerufen oder der Variablen RandSeed ein Wert zugewiesen wird.

Kombinieren Sie in einer Schleife nicht den Aufruf von Randomize mit Aufrufen der Funktion Random . Normalerweise wird Randomize vor den Aufrufen von Random nur einmal aufgerufen.
Und wenn Du wissen willst ob da wirklich alles mit rechten Dingen zugegangen ist, dann laß Deinen Generator mal über 1000 Runden laufen, dann solltest Du eine ungefähr gleiche Häufigkeit aller Zahlen haben.
Wikipedia zur Wahrscheinlichkeit

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector

Geändert von p80286 ( 9. Nov 2012 um 12:43 Uhr)
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#18

AW: Zufallszahlen erstellen

  Alt 9. Nov 2012, 13:30
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:
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;
Man beachte, dass bei der Abfrage immer else verwendet wird.

Lnagfristig macht dieses kleine Ungleichgewicht zu Gunsten der Bank einen grossen Unterschied!!
Andreas

Geändert von shmia ( 9. Nov 2012 um 13:39 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#19

AW: Zufallszahlen erstellen

  Alt 9. Nov 2012, 13:46
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
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Jonas Shinaniganz
Jonas Shinaniganz

Registriert seit: 30. Aug 2011
249 Beiträge
 
Delphi XE5 Ultimate
 
#20

AW: Zufallszahlen erstellen

  Alt 9. Nov 2012, 15:37
Also nochmal kurz zu deinem Satz:

Zitat:
Rechnerisch sieh Roulette doch folgendermaßen aus:
16/33, dass man gewinnt, 16/33, dass man verliert. 1/33, dass die Null kommt und man 1/2 Chance darauf hat, dass man den Einsatz zurück bekommt.
Das sind im Endeffekt doch 33/66:33/66, oder irre ich? Von daher hat man ja eine Gewinnerwartung von +/- 0, wenn man ohne System spielt. Mit dem System würden sich einige Verluste abfangen lassen, wodurch es logisch wäre, dass ich bei 10.000 Berechnungen einen positiven Schnitt bekomme.
Die Casionos gewinnen also, sobald man dem System untreu wird oder bei anderen Spielvarianten. Vllt. irre ich mich ja aber auch, was ich momentan für ganz wahrscheinlich halte...
...

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 http://de.wikipedia.org/wiki/Bankvorteil erwähnen.
Die Leiter der Entwicklungsabteilung dreht total am Mausrad!

Geändert von Jonas Shinaniganz ( 9. Nov 2012 um 15:49 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 02:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz