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 1 von 3  1 23      
LPIG

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

Zufallszahlen erstellen

  Alt 7. Nov 2012, 22:05
Hey,

ich habe mit Hilfe von Random(32) einen Roulette Simulator in Delphi erstellt.
Die eigentliche Auswertung einer Zufallszahl geschieht folgendermaßen:

randomize;
x:=random(32);

Das Interessante, wesswegen ich es auch programmieren wollte ist, dass ich einen Knopf habe, der nach dem Prinzip spielt: Sobald ich verliere, verdoppel ich den Einsatz, wenn ich dann einmal gewinne gehe ich wieder auf den Mindesteinsatz, wobei der Mindesteinsatz 2 Euro ist und der Maximaleinsatz 1000 beträgt. Ich kann einstellen, wieoft er pro Klick drehen und nach dem Prinzip setzen soll.

Das Problem:
Wenn randomize bei Form.create steht bekomme ich bei 100000 Versuchen immer eine negative Gesamtbilanz, das heißt, ich mache Verlust. Wenn ich aber Randomize direkt vor dem Auswürfeln der random Zahl mache, so wie ich es oben stehen habe, dann wird die Gesamtbilanz in jedem Fall negativ.
Ich habe Randomize jetzt zweimal hingeschrieben, bin mir aber unsicher, was es nun bewirkt. Ich bekomme jetzt nämlich immer eine positive Gesamtbilanz und das macht mich schon ein wenig stuzig!
Bevor ich also ins Casino gehe und mein Geld verzocke:
Wie bekomme ich eine wirklich zufällige Zahlenreihenfolge hin?

Bedanke mich schon im Vorraus!

lg
LPIG
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: Zufallszahlen erstellen

  Alt 7. Nov 2012, 22:27
Random hat immer die gleichen Zufallsazahlen. Jedes mal das gleiche. Randomize holt einen Wett (ich glaube aus der Uhrzeit) und bringt etwas durcheinander.
  Mit Zitat antworten Zitat
Medium

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

AW: Zufallszahlen erstellen

  Alt 7. Nov 2012, 22:30
Zur Frage: Mit einem Stück Hardware, dass den Alpha-Zerfall einer Strahlenquelle misst und in eine Zahl verwurstet.

Zum Problem: Random() erzeugt durchaus ganz okay verteilte Zufallszahlen, jedoch ist wahrscheinlich die Anzahl der Drehs einfach zu gering. Du wirst genau das gleiche Problem auch bei echtem Zufall haben: Für eine 0-Bilanz (nennt man auch bias-Freiheit) müsstest du theoretisch unendlich oft Drehen (und deine Obergrenze entfernen). Da Random() imho eine Periodenlänge von ca. 2^32 hat, müsstest du also nach spätestens rund 4 Mrd. Mal drehen grob bei +/- 0 raus kommen.

Deinem Prinzip fehlt übrigens noch eine Abbruchbedingung: Bei wie viel Gewinn soll aufgehört werden? Das ist bei dieser Strategie nämlich der wichtige Punkt. Spielt man, sobald man mal einen guten Gewinn hat, einfach weiter, so wird man ihn statistisch gesehen auch wieder verzocken. Und durch die Grenze von 1000 limitierst du die Verlust-Auffang-Absicht hinter der Verdopplung nach Verlust auf 9 Mal drehen ohne Gewinn (was 512 sind, da es beim 10. Mal schon 1024 wären). Die Strategie ist folglich nur mit unendlich Kapital verlustfrei spielbar, und auch nur, wenn man es unendlich lange macht. Man verlagert damit also das Glück vom treffen der Zahl auf einen guten Zeitpunkt zum Aufhören, und die Bedingung, dass man von Anfang an steinreich sein muss. Glaub mal, es gäbe sonst keine Casinos mehr.

Ich würde sagen, du hast mit deinem Random einfach viel Pech gehabt, und im Mittel solltest du mit der Strategie mit Limit definitiv Verlust fahren, wenn man nicht bei Gewinn X abbricht. Ob man diesen Gewinnpunkt mit Limit überhaupt erreicht ist dann wieder Glück, und die Wahrscheinlichkeit dürfte sehr genau der entsprechen, mit der man auch bei "normalem" Spielen zu tun hat.

Interessant ist vor allem auch deine Auszahlung bei einer Gewinnrunde. Wenn es einfach 1:1 ist, aber du setzt jeweils eine Zahl aus 32, dann muss man ja fast Verlust fahren! Fazit: Lass die radioaktiven Stoffe weg, und feile besser nochmal an der Strategie
"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
Popov
(Gast)

n/a Beiträge
 
#4

AW: Zufallszahlen erstellen

  Alt 7. Nov 2012, 22:40
Hier ein Beispiel wie gut oder schlecht Random Zufallswerte produziert. Theoretisch müsste alles schwarz sein, ist aber knapp dran:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  x, y, i, z: Integer;
begin
  z := Width * Height;
  for i := 0 to z do
  begin
    x := Random(Width);
    y := Random(Height);
    Canvas.Pixels[x, y] := clBlack;
  end;
end;
  Mit Zitat antworten Zitat
Medium

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

AW: Zufallszahlen erstellen

  Alt 7. Nov 2012, 22:50
Naja, theoretisch dürfte nicht alles schwarz sein - dann wäre es eine bijektive Funktion. Insofern schon fast zu gut gleichverteilt, aber das ist wohl auch Absicht: Man möchte ja nach möglichst geringer Samplezahl schon möglichst gleichverteilt sein. Bei "echtem" Zufall ist das Universum meist weniger gnädig glaub ich.
"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
Furtbichler
(Gast)

n/a Beiträge
 
#6

AW: Zufallszahlen erstellen

  Alt 8. Nov 2012, 06:35
Um es anders auszudrücken: Nehmen wir an, eine gute Zufallsfunktion sollte 'alles schwarz machen', weil die Zahlen perfekt verteilt sind. Gleichzeitig soll eine gute Zufallsfunktion gleichverteilte und 'nicht vorhersehbare' Zufallszahlen erzeugen.

So, wie Du dir das vorstellst ('alles schwarz') wäre das bei den letzten paar Pixeln so, das man genau wüsste, welche Zahlen als nächstes kommen (die weißen). Dann wäre aber o.g. Definition des Zufallszahlengenerators nicht erfüllt. Beweis durch Widerspruch: Die Behauptung 'alles schwarz => guter Generator' ist falsch.
  Mit Zitat antworten Zitat
Benutzerbild von Jonas Shinaniganz
Jonas Shinaniganz

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

AW: Zufallszahlen erstellen

  Alt 8. Nov 2012, 07:37
Die Aufgabe ist als Programmier-Übung geeignet... Allerdings kann ich dir jetzt schon sagen: Was du da machst ist klassischer Martingale.
http://de.wikipedia.org/wiki/Martingalespiel

Aus der Warscheinlichkeitsrechnung: der Erwartungswert bleibt für den Spieler stets negativ.

Du gewinnst eine Einzelne Runde zwar zu: t ≈99,9713 % ABER um einen einzigen "beknackten" Euro zu gewinnen, setzt du teilweise schnell 2048€ oder falls du das Spiel auch verlierst, immernoch um den "Anfangseuro" zurückzugewinnen 4096€ und dann knapp 10.000€ um den Euro erneut "zu versuchen" zu gewinnen.

Die langen Farbfolgen im Roulette die mit unbarmherziger Warscheinlichkeit auftreten werden haben schon alle Zocker, die Ihren Einsatz erhöhen um den Verlust wieder wett zu machen, ruiniert. Das Casino freut sich über Leute die nach "Strategie" spielen. Egal welche "Strategie".

Grüße
Die Leiter der Entwicklungsabteilung dreht total am Mausrad!
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#8

AW: Zufallszahlen erstellen

  Alt 8. Nov 2012, 08:14
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.
  Mit Zitat antworten Zitat
LPIG

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

AW: Zufallszahlen erstellen

  Alt 8. Nov 2012, 17:23
Vieelen Dank für eure ganzen Antworten!
Ich habe bisher noch so gut wie keine Erfahrung mit Programmiersprachen, deshalb verstehe ich leider nicht alles, was ihr sagt.

Die Idee war eigentlich, dass man wie im Casino einen Mindest/Maximal-Einsatz festlegen kann und dann 10.000 oder mehr Versuche durchlaufen lassen kann, was dann für die Gewinnerwartung aufschlussreich wäre. Wenn mich meine Logik nicht komplett anschwindelt, dann spielt es in dem Fall auch keine Rolle, ob er diese Versuche in einem durchlaufen lässt ohne jemals abzubrechen.
Was aber unlogisch ist (was ja bei einem Computer nicht sein kann) :

Ohne Randomize:
Bei 10.000 Versuchen bekomme ich einen leichten Gewinn

Randomize bei TForm1.FormCreate
Ebenfalls ca. gleichen leichten Gewinn.

Randomize vor Random(32);
Selbst bei 100.000 Versuchen bin ich bekomme ich unverhältnissmäßig viel Verlust. Ich bin dann meistens schon nach 100 Versuchen bei -2800 oder mehr, was ja tatsächlich kaum sein kann.

Ich würde gerne verstehen, woran das liegt. Im Endeffekt spielt es auch keine Rolle, ob die Zahlen tatsächlich "zufällig" sind, solange ich bei 100.000 Veruschen in Etwas +/- 1000 x 50.000 ungerade bzw. gerade Zahlen dabei habe (Die Null habe ich auch mit berücksichtigt, aber spielt jetzt ja keine Rolle, es ist mir eigentlich egal ob ich Gewinn oder Verlust mache, ich möchte das es korrekt funktioniert. ).



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...

Vielen Dank für eure guten und hilfreichen Erläuterungen bis zu diesem Punkt schonmal.

lg
LPIG
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#10

AW: Zufallszahlen erstellen

  Alt 8. Nov 2012, 17:37
Das Casino freut sich über Leute die nach "Strategie" spielen. Egal welche "Strategie".
Abgesehen vom Kartenzählen
EDIT: Ach verdammt ...
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.

Geändert von BUG ( 8. Nov 2012 um 17:39 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 22:26 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