Noise (FPScript)
Erzeugt gleich-, normal- oder exponentialverteilte Zufallszahlen.
Syntax
Noise(Value, [ Distribution = NOISE_UNIFORM ] [ , Init ])
Die Syntax der Noise-Funktion besteht aus folgenden Teilen:
Teil |
Beschreibung |
||||||||
---|---|---|---|---|---|---|---|---|---|
Value |
Ein beliebiger Wert, der die Anzahl, die Datenstruktur und die Einheit der Zufallszahlen bestimmt. Es sind alle Datenstrukturen erlaubt. Es sind alle numerischen Datentypen erlaubt. Ist das Argument eine Liste, dann wird die Funktion für jedes Element der Liste ausgeführt und das Ergebnis ist ebenfalls eine Liste. |
||||||||
Distribution |
Bestimmt die statistische Verteilung, die die Zufallszahlen haben sollen. Das Argument Distribution kann folgende Werte haben:
Ist das Argument eine Liste, dann wird deren erstes Element entnommen. Ist dies wieder eine Liste, dann wird der Vorgang wiederholt. Wenn das Argument nicht angegeben wird, wird es auf den Vorgabewert NOISE_UNIFORM gesetzt. |
||||||||
Init |
Ist der Initialisierungswert für den Zufallszahlengenerator, Wenn Sie 0 übergeben, dann wird der Generator nicht neu initialisiert, d. h. die bereits mit einem vorherigen Aufruf begonnene Sequenz wird fortgesetzt. Wenn Sie das Argument weglassen oder die Funktion zum ersten Mal aufrufen, dann wird der Generator mit der aktuellen Systemzeit initialisiert. Erlaubte Datenstrukturen sind Einzelwert. Es sind alle numerischen Datentypen erlaubt. Ist das Argument eine Liste, dann wird deren erstes Element entnommen. Ist dies wieder eine Liste, dann wird der Vorgang wiederholt. |
Anmerkungen
Der Datentyp des Ergebnisses ist immer 64-Bit Fließkomma.
Die Struktur des Ergebnisses entspricht der des Arguments Value.
Wenn Value eine zusammengesetzte Datenstruktur hat, d. h. ein Signal, eine Signalreihe oder eine Raumkurve ist, dann werden die X- und ggf. Z-Komponenten in das Ergebnis kopiert und für jeden Wert der Y-Komponente wird eine Zufallszahl erzeugt.
Zur Erzeugung der gleichverteilten Zufallszahlen verwendet die Funktion einen Zufallsgenerator mit zufälliger Zykluslänge, wie er als Generator "RANROT Type W" in [1] beschrieben wird.
Die normalverteilten Zufallszahlen werden mittels des Box-Mueller-Verfahrens aus den gleichverteilten Zufallszahlen erzeugt. Die erzeugten Zufallszahlen haben Mittelwert 0 und Standardabweichung 1. Hiervon können durch eine einfache lineare Transformation beliebige andere Normalverteilungen abgeleitet werden: μ + σ * Noise(x, NOISE_NORMAL), mit dem gewünschten Mittelwert μ und der gewünschten Standardabweichung σ.
Die exponentialverteilten Zufallszahlen werden mittels des Transformationsverfahrens von den gleichverteilten abgeleitet. Die erzeugten Zufallszahlen haben ein Lambda von 1. Durch Division können Sie hieraus beliebige andere Exponentialverteilungen erzeugen: Noise(x, NOISE_EXPONENTIAL) / , mit dem gewünschten Lambda .
Beide Transformationsverfahren sind u. A. in [2] beschrieben.
Verfügbarkeit
FlexPro Basic, Professional, Developer Suite
Beispiele
Noise(1) |
Ergibt (zufällig) 0.8499. |
x = (1000, 0.1 s, 0.01 s) |
Erzeugt ein Signal mit 1000 gleichverteilten Zufallszahlen im Intervall [0, 1] V und mit X-Komponente von 0 s bis 10 s. |
3. + 2. * Noise(1#100, NOISE_NORMAL) |
Erzeugt eine Datenreihe mit 100 normalverteilten Zufallszahlen mit Mittelwert 3 und Standardabweichung 2. |
Siehe auch
Literatur
[1] "William H. Press et al.": "Numerical Recipes in C, Second Edition". http://www.agner.org/random/theory,2001.
[2] "William H. Press et al.": "Numerical Recipes in C, Second Edition", Seite 274. "Cambridge University Press",1992.ISBN 0-552-43108-5.