Bei der Modellierung von physikalischen System werden häufig normalverteilte Zufallszahlen benötigt. Immer wieder habe ich danach suchen müssen. Jetzt hab' ich's mir dem UrsRandomExtension-Modul gefixt.
Normalverteilte Zufallszahlen liefert die Funktion NextGauss. Anzugeben
sind der Mittelwert und die Standardabweichung der Verteilung. Es handelt sich bei dieser Funktion
um eine Erweiterungsfunktion der Klasse System.Random. Der Aufruf erfolgt
also wie ein Member dieser Klasse. Der formale Parameter Random As System.Random
ersetzt
die implizite Übergabe von this (oder Me
in Basic) bei Standard-Member-Methoden.
Dim rnd As New Random
Dim x = rnd.NextGauss(µ:=0, σ:=1)
Dim y = rnd.NextGauss(10, 0.1)
Das Testprogramm zeigt, wie die Zufallszahlen verteilt sind.
Die Klasse Random besitzt eine Methode um gleichverteilte, ganzzahlige Zufallszahlen innerhalb eines bestimmten Bereichs zu generieren. Die Methode NextUniform liefert zufällige Gleitkommazahlen im angegebenen Bereich.
Die Instanz RandomSharedInstance entledigt von der Verpflichtung eine Instanz der Random-Klasse anzulegen.
Bezeichnung | Funktion |
---|---|
NextDate As Date | Gibt ein zufälliges Date-Objekt zurück, das in einem angegebenen Bereich liegt. |
NextDateTime As DateTime | Gibt eine zufälliges DateTime-Objekt zurück, das in einem angegebenen Bereich liegt. |
NextLong As Int64 | Gibt eine zufällige 64-Bit-Ganzzahl zurück, die in einem angegebenen Bereich liegt. |
NextUniform As Double | Gibt eine zufällige Gleitkommazahl zurück, die in einem angegebenen Bereich liegt. |
NextDouble as Double | Gibt eine zufällige Gleitkommazahl zurück. Zwei Intervall-Varianten. |
Das Testprogramm zeigt die Verteilung von 1000 Samples.