Abstract
Um eine Standardnormalverteilung zu generieren, verwenden Sie normalerweise =NORM.S.INV(ZUFALLSZAHL()). Wenn Sie also eine Standardnormalverteilung mit dem Mittelwert 7 und der Standardabweichung 10 benötigen, dann rufen Sie =NORM.INV(ZUFALLSZAHL();7;10) auf.
Aber: Ihre Normalverteilung wird nie einen Mittelwert von genau 7 (und nie eine Standardabweichung von genau 10) zeigen, wenn die Anzahl der Zufallszahlen nicht gegen unendlich geht. Falls Sie einen Mittelwert von genau 7 und eine Standardabweichung von genau 10 erreichen wollen, dann müssen Sie die erzeugte Menge von Zufallszahlen zum Mittelwert verschieben und sie dann zur gewünschten Standardabweichung stauchen oder dehnen. Sie können dies auf mindestens drei verschiedene Art und Weisen erreichen:
Appendix sbGenNormDist Code
Bitte den Haftungsausschluss im Impressum beachten.
Option Explicit
Function sbGenNormDist(lCount As Long, _
dMean As Double, _
dStDev As Double) As Variant
'Generates lCount normally distributed random values
'with mean dMean and standard deviation dStDev.
'Source (EN): http://www.sulprobil.com/sbgennormdist_en/
'Source (DE): http://www.bplumhoff.de/sbgennormdist_de/
'(C) (P) by Bernd Plumhoff 30-May-2024 V0.3
Dim i As Long
Dim dSampleMean As Double, dSampleStDev As Double
If lCount < 2 Then
sbGenNormDist = CVErr(xlErrValue)
Exit Function
End If
ReDim vR(1 To lCount) As Variant
With Application
For i = 1 To lCount
vR(i) = .Norm_Inv(Rnd(), dMean, dStDev)
Next i
dSampleMean = .Average(vR)
dSampleStDev = .StDev_S(vR)
For i = 1 To lCount
vR(i) = dMean + (vR(i) - dSampleMean) * dStDev / dSampleStDev
Next i
sbGenNormDist = .Transpose(vR)
End With
End Function
Download
Bitte den Haftungsausschluss im Impressum beachten.
sbGenNormDist.xlsm [49 KB Excel Datei, ohne jegliche Gewährleistung]