Die einfachste Moeglichkeit ist, zwei gleichverteilte (unabhaengige) Zufallszahlen
x1,x2 zu ziehen. Dann erhaelt man mittels
z1 = sqrt(-log(x1))*cos(2*PI*x2)
eine normalverteilte Zufallszahl. Moechte man eine weitere
normalverteilte Zufallszahl haben, so braucht man nur den SIN statt den COS zu
verwenden und erhaelte eine zweite.
Gruss,
Marco.
Es gibt die Box-Muller-Methode: ausgehend von 2 gleichverteilten
Zufallsvariablen x1 und x2 erhält man 2 normalverteilte (y1, y2) mit der
Rechnung
y1 = sqrt(-2*ln(x1))*cos(2*PI*x2)
y2 = sqrt(-2*ln(x1))*sin(2*PI*x2)
Erklärung siehe
http://www.ulib.org/webRoot/Books/Numerical_Recipes/bookcpdf.html
Kapitel 7.
Michael
Gruß Rainer
"Kai Winter" <tommy....@okay.net> wrote:
>Ich habe momentan das Problem, dass ich fuer ein Projekt die Transformation von
>gleichverteilten Zufallszahlen in die Gaussverteilung implementiern muss. Da das
>meines Wissens nach nicht analytisch loesbar ist, wollte ich fragen, ob sich
>jemand schon einmal mit diesem Problem der Implementierbarkeit befasst hat und
>eine Loesung gefunden hat?!
>Soweit vielen Dank
>Kai
>--
> Hallo Kai,
> ich überlege mir, welche eineindeutige Funktion f man auf eine gleichverteilte
> Zufallsgröße X anwenden muß, damit sie normalverteilt wird. Es sei N die
> Wahrscheinlichkeitsfunktion einer Normalverteilung und G die
> Wahrscheinlichkeitsfunktion der Gleichverteilung auf dem Intervall [0;1] (die
> Ableitung ergibt die jeweilige Wahrscheinlichkeitsdichte). Dann muß für alle t
> gelten:
> N(t) = P(f(X) < t) = P(X < (f^-1)(t)) = G((f^-1)(t))
> (G^-1)(N(t)) = (f^-1)(t)
> (N^-1)(G(t)) = f(t)
> f(t) = (N^-1)(t) für t aus [0;1] wegen G(t) = t.
> Man muß also jedes gewürfelte x in f(x) = (N^-1)(x) transformieren. Die Umkehrung
> des Gaußschen Fehlerintegrals" N muß man irgendwie numerisch bilden, aber das ist
> "nur" ein rechentechnisches Problem (Tabelle, interpolieren, Approximation mit
> arctan o.ä.).
So weit muss man nicht gehen.
Der Trick ist, dass man nicht eine eindimensionale sondern eine
zweidimensionale Standard-Normalverteilung simuliert, deren x- und y-
Komponenten jeweils ein unabhaengiges Paar Standard-normalverteilter
eindimensionaler ZV ergibt. Die zweidimensionale
Standardnormalverteilung laesst sich leicht simulieren, da der Abstand
r eines zweidimensionales standardnormalverteilten "Zufallspunktes"
vom Ursprung die Verteilungsfunktion
F(r) = 1-exp (-r^2/2) r>=0
mit der Umkehrfunktion
G(y) = sqrt(-2log(1-y))
hat (Uebungsaufgabe ;-). Man nehme also ein in [0,1) gleichverteiltes
Sample y1, berechne
r = sqrt(-2log(1-y1))
Dann nimmt man noch mittels eines zweiten Samples y2 einen zufaelligen
Drehwinkel
phi = 2pi*y2
und man hat die Polarkoordiaten eines zweidimensionalen
standardnormalverteilten Samples. Ergibt zwei unabhaengige
eindimensionale Samples
x = r*cos(phi)
y = r*sin(phi)
MfG
Horst
horst....@gmx.de (Horst Kraemer) wrote:
>Der Trick ist, dass man nicht eine eindimensionale sondern eine
>zweidimensionale Standard-Normalverteilung simuliert, deren x- und y-
>Komponenten jeweils ein unabhaengiges Paar Standard-normalverteilter
>eindimensionaler ZV ergibt. Die zweidimensionale
>Standardnormalverteilung laesst sich leicht simulieren, da der Abstand
>r eines zweidimensionales standardnormalverteilten "Zufallspunktes"
>vom Ursprung die Verteilungsfunktion
>
> F(r) = 1-exp (-r^2/2) r>=0
>
>mit der Umkehrfunktion
>
> G(y) = sqrt(-2log(1-y))
>
>hat (Uebungsaufgabe ;-).
Die "Übungsaufgabe" läuft auf die Integration der gemeinsamen Dichte von X, Y
(beide standardnormalverteilt, unabhängig) über eine Kreisscheibe hinaus.
Gruß Rainer