VB-Tec.de Visual Basic - Technik, FAQ, Tricks, BeispieleHome / Allgemein / Mathe / RndNV Normal-verteilte Zufallszahlen |
Public Function RndNV() As Double
Dim RndSqr As Double
Dim Faktor As Double
Static RndNV2 As Double
Static UseRndNV2 As Boolean
'Jeder Durchgang erzeugt zwei Werte:
If UseRndNV2 Then
'Vorhandenen Wert nutzen:
RndNV = RndNV2
UseRndNV2 = False
Else
'Zwei neue Kandidaten erzeugen:
Do
RndNV = 2 * Rnd - 1#
RndNV2 = 2 * Rnd - 1#
RndSqr = RndNV * RndNV + RndNV2 * RndNV2
Loop Until RndSqr <= 1#
'Normierung:
Faktor = Sqr(-2# * Log(RndSqr) / RndSqr)
RndNV = RndNV * Faktor
RndNV2 = RndNV2 * Faktor
UseRndNV2 = True
End If
End Function
Entsprechend unserem obigen Beispiel kann mit folgender Anweisung ein zufällige Personengröße gemäß Normalverteilung erzeugt werden:PersonCM = 170 + 10 * RndNV
© Jost Schwider, 26.11.2000-26.11.2000 - http://vb-tec.de/rndnv.htm