RNG mit Gleichverteilung in Normalverteilung überführen
-
Hallo miteinander,
aktuell experimentiere ich ein bisschen mit dem Zufall und bin einfach darauf gestoßen, dass der normale Zufall per
(s)rand
nicht dem entspricht, was ich mir vorstelle. Aktuell nutze ich die neue Mersenne-Twister [1] Enginestd::mt19937
bzw.std::mt19937_64
zur Generierung von Zufallszahlen, jedoch sind diese auch gleichverteilt. Nun würde ich gerne diese Verteilung etwas modifzieren und den jeweiligen Ergebnissen Wahrscheinlichkeiten zuordnen, so dass man diese als Gauss'sche Glockenkurve darstellen könnte, um einfach die beiden Grenzen/Extremamax
undmin
und deren Umgebung einfach etwas unwahrscheinlicher zu machen. Bei einigen Suchen im Netz bin ich dann auf die Box-Muller-Transformation [2] gestoßen, die sehr vielversprechend klingt, aber leider im falschen Zahlenbereich arbeitet, da sie Inputs im Intervall (0;1] erwartet und die Outputs etwas willkürlich erscheinen. Ersteres wäre an sich kein Problem, aber letzteres. Eigentlich ist das eine sehr simple Frage, die ich habe, aber ich stehe einfach gerade extrem auf dem Schlauch: was wäre die bequemste Möglichkeit (ohne die Eigenschaft der Normalverteilung kaputt zu machen!) diesen Output von Box-Muller auf mein Intervall [min;max] zu erweitern?Gruß,
ChristianReferenzen:
[1] Wikipedia :: C++11 :: Random Number Facility
[2] Wikipedia :: Box-Muller Transformation
-
Du möchtest eine Gaußverteilung im Bereich [min:max]? Ich fürchte, dies ist ein mathematischer Widerspruch.
-
Naja, ich scheine wieder wirres Zeug zu reden.
Es geht mir darum, wenn ich jetzt einfach mal "Fach"begriffe weglasse, dass ich Zufallszahlen erhalte, die die Eigenschaft besitzen, dass die Werte um die Mitte des Intervalls häufiger als Ergebnis auftreten, als die am Rande. Beispiel: Ein "gezinkter" W20-Würfel, bei dem eher normale Ergebnisse kommen und die Werte in [1;3]u[18;20] seltener auftreten.
@SeppJ: Was wäre denn die korrekte Terminologie dafür? Statistik/Wahrscheinlichkeitsrechnung war noch nie mein Lieblingsgebiet der Mathematik
-
Christian Ivicevic schrieb:
@SeppJ: Was wäre denn die korrekte Terminologie dafür? Statistik/Wahrscheinlichkeitsrechnung war noch nie mein Lieblingsgebiet der Mathematik
Das kann ich dir nicht sagen. Die Beschreibung "in der Mitte irgendwie mehr" ist viel zu vage.
Da es dir nicht auf mathematische Korrektheit oder besondere Eigenschaften der Verteilung ankommt: Wie wäre es mit einer Gaußverteilung und du schneidest bei min/max ab?
-
Was mir bei der Überlegung durch den Kopf ging, war ja die Visualisierung dieser Kurve. Da ja ∫_(-∞)^∞=1 ist folgt ja die Eigenschaft, dass man für einen beliebigen x-Wert eine Wahrscheinlichkeit bekommt, dass dieser bei eine Zufallsexperiment auftaucht (womöglich müsste man die Kurve in das gewünschte Intervall verschieben) und diese Wahrscheinlichkeiten würde ich gerne auf die jeweiligen Ergebnisse anwenden um zu steuern, in welchem Rahmen sich die Ergebnisse am meisten bewegen sollen.
Was meintest du mit deinem Abschneiden genau - das wird mir im Moment nicht ganz klar.
-
Ich glaube, jetzt bin ich restlos verwirrt und sage lieber gar nichts. Ich habe keine Ahnung mehr was du überhaupt möchtest und auch nicht, ob meine ersten Antworten zu deinen Absichten passten.
-
du solltest vielleicht mal die boost::random docu genauer studieren. Da ist alles drin, was du suchst.
TIpp: such mal unter "distributions"
-
Simulation normalverteilter Zufallsvariablen durch iid Zufallsvariablen
Das wollte ich ursprünglich haben und ich wurde bei Stackexchange auf die Idee gebracht und es klappt. Ich nutze dafür die Polar-Methode von Marsaglia. Wer näheres lesen will, den verweise ich auf meine eigene Frage bei Stackexchange [1]. Und ich hoffe man versteht jetzt, was ich sagen/haben wollte...