Zufallszahlen erzeugen
-
Hi Leute,
(fast) jede Programmiersprache stellt ja einen Zufallsgenerator zur Verfügung, der gleichverteilte Zufallszahlen erzeugt. Was mache ich jetzt aber, wenn ich Normalverteilte Zufallszahlen (Mittelwert m und Streuung s sind vorgegeben) brauche?
Und noch kopmlizierter: Wie kann man Zufallsvektoren erzeugen? Vor allen das Einarbeiten der Abhängigkeiten der einzelnen Komponenten (also die realisierung der ebenfalls gegebenen Kovarianzmatrix) scheint sehr schwierig zu sein.
Wer hat gute Tips?
Danke!
-
Zufallszahlen lassen sich z.B. mit dem sog. "Mersenne Twister"-Algorithmus generieren.
http://www-personal.engin.umich.edu/~wagnerr/MersenneTwister.html
http://www.flipcode.com/cgi-bin/msg.cgi?showThread=COTD-MersenneTwister&forum=cotd&id=-1EDIT: Oops, ich hab Zufallsvektoren als Zufallszahlen gelesen. Naja, vielleicht helfen die Links trotzdem.
H.B.
[ Dieser Beitrag wurde am 30.06.2003 um 13:06 Uhr von Harrison Bergeron editiert. ]
-
*eek* als wenns nicht reichen würde, dass die Uni mir morgen einen Stochastik-Test beschert
Das was man mit dem Computer erzeugen kann, nennt man Rechteck-Verteilte Zufallszahlen. Die liegen z.B. zwischen 0 und INT_MAX, das wäre dann eine Rechteck(0, INT_MAX)-Verteilung. Durch dividieren durch INT_MAX bekommt man dann Rechteck(0, 1)-verteilte Zufallszahlen. Diese kann man nun durch zwei Methoden in jede beliebige andere Verteilung umwandeln, die erste heißt Inversionsmethode, bei der man im Prinzip die Verteilungsfunktion einfach rückwärts ansetzt. Das hilft aber bei der Normalverteilung nicht. Die zweite nennt sich Verwerfungsmethode, habe ich leider nicht ganz gepeilt
Aber ich denke Google dürfte mit diesen Begriffen was feines auswerfen.
-
Kapitel 7 von "Numerical Recipes in C" wendet sich den "Random Numbers" zu, die Online Version findest Du unter http://www.library.cornell.edu/nr/bookcpdf.html
Gruß Winn
-
Schau mal hier: http://www.pitt.edu/~wpilib/statfaq/gaussfaq.html