VBA蒙特卡罗模拟 - 修复时间发生器(对数正态分布)

时间:2011-03-29 15:47:16

标签: math excel-vba simulation montecarlo vba

我的名字是Rik,我是一个6-sigma绿带,我创建了一个飞机发动机维修设施的Monte-Carlo模拟。我目前正在使用Excel VBA进行6-sigma项目。

我在开发程序时只是缩放了一个随机数,但是现在它已经开发了我想使用逆对数正态CDF http://engineer.jpl.nasa.gov/practices/at2.pdf来创建随机修复时间,但我找不到在线功能。

我确实在http://www.anthony-vba.kefra.com/vba/vba12.htm上找到了以下代码,但它是针对正态分布的,我不确定它的准确性。我找不到逆对数正态CDF的等式。我想要反向对数正态CDF函数的类似代码。

非常感谢任何帮助。

'****************************************************************************
'*         Return random numbers from Standard Normal Distribution          *
'****************************************************************************
Function gauss()
    Dim fac As Double, r As Double, V1 As Double, V2 As Double
10      V1 = 2 * Rnd - 1
        V2 = 2 * Rnd - 1
        r = V1 ^ 2 + V2 ^ 2
        If (r >= 1) Then GoTo 10
        fac = Sqr(-2 * Log(r) / r)
        gauss = V2 * fac
End Function

1 个答案:

答案 0 :(得分:1)

如果您使用的是Excel VBA,则Excel函数Loginv以及0到1之间的随机数可用于生成随机日志正态分布数。