normalverteilte Zufallszahlen erzeugen.

Neue Frage »

fdsa Auf diesen Beitrag antworten »
normalverteilte Zufallszahlen erzeugen.
Hallo,

ich brauch für eine Simulation Zufallszahlen, die einer definierten Normalverteilung folgen, z.B. N(a,b). Dafür hab ich ein Programm, das mit Hilfe der Polarmethode

http://de.wikipedia.org/wiki/Polarmethode

ein Array von Zufallszahlen arrzzahl() erzeugt. Das Ganze sieht in VBA so aus:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
For i = 0 To 1000 Step 2
    Do Until q <= 1 And q > 0
        ta = Rnd
        tb = Rnd
        q = (2 * ta - 1) ^ 2 + (2 * tb - 1) ^ 2
    Loop
    p = Sqr(-2 * Log(q) /0.43429/ q)
    arrZZahl(i) = (2 * ta - 1) * p
    arrZZahl(i + 1) = (2 * tb - 1) * p
    q = 2
Next i


jetzt will ich aber die Verteilung in arrZZahl() = Z in eine Verteilung T mit den Parameter a (Mittelwert) und b (Varianz bzw. Sigma) umwandeln.

Den Mittelwert kann ich einfach addieren, da bei Z der Mittelwert 0 ist.

T = Z + a

Aber die Varianz macht Schwierigkeiten. Ich habe versucht die quadratischen Abweichungen von Z "per Dreisatz" über einen Faktor anzupassen LOL Hammer
Aber da kommt natürlich Blödsinn raus. Hat jemand eine Idee?
Huggy Auf diesen Beitrag antworten »
RE: normalverteilte Zufallszahlen erzeugen.
Wenn x normal verteilt ist mit Mittelwert und Standardabweichung , dann ist bekanntlich



standardnormal verteilt. Das ergibt umgestellt:



Mit dieser Gleichung verwandelst du dein standardnormal verteiltes y in ein normalverteiltes x mit Mittelwert und Standardabweichung (bei dir a und b genannt).
fdsa Auf diesen Beitrag antworten »

Sehr geil,

es funktioniert. Danke!
AD Auf diesen Beitrag antworten »

Ich kenne VB nicht so gut, aber anscheinend ist q mit Wert 0 vorbelegt? Ansonsten wäre der erste Schleifendurchlauf (d.h. i=0) undefiniert.

Sicherer wäre es, die Anweisung q=2 als erste statt als letzte Anweisung in die Hauptschleife zu platzieren!
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »