2011-03-29 61 views
1

我的名字是Rik,我是一個6西格瑪綠帶,並且我創建了一個飛機發動機修理設施的蒙特卡洛模擬。我目前正在Excel VBA中執行一個6-sigma項目。VBA蒙特卡羅仿真 - 修復時間發生器(對數正態分佈)

我只是在開發程序時縮放了一個隨機數,但現在開發出來了,我想使用反對數正態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

Excel VBA是一個非常糟糕的統計工具;有很多統計工具可以防止你不必重新開始這樣的任務(並減少引入錯誤的可能性)。有些甚至是免費的(R是一個很好的例子)。 – Assaf 2011-03-29 15:56:05

+0

您應該將[數學]標籤添加到您的問題中以吸引專家 – MikeD 2011-03-31 20:24:17

回答

1

如果正在使用Excel VBA具有0和1之間的隨機數的Excel函數LOGINV一起可用於產生隨機數正態分佈數。