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:

sbGenNormDist_01_Screen

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]