![](/img/trans.png)
[英]Convert Excel VBA Analysis ToolPack "Fourier" Sub into a UDF Function
[英]Random number generator in VBA using Analysis Toolpack-VBA
我使用以下行生成泊松隨機數:
Application.Run("Random", "", 1, 100, 5, , 34)
這會在excel表中生成100個Lambda(34)的隨機數。 我想將輸出保存到變量而不是表單。 我試過了
X=Application.Run("Random", "", 1, NSim, 5, , 34)
我沒有收到任何錯誤,但“X”中沒有保存任何內容。 你能幫我解決一下我如何將結果保存在一個變量中的問題。 謝謝
看起來該函數返回一個布爾值而不是一個數字數組,並且只接受一個范圍作為輸出作為其參數之一。
看起來Random
是一個子例程,除非您有權訪問底層代碼,否則無法直接執行此操作。
您可以執行的操作(盡管相當向后)是讓子運行,然后將結果分配回變量並將其從工作表中刪除:
Sub MM()
Dim generateNumbers As Integer, results As Variant
generateNumbers = 100 '// numbers to generate
Application.Run("Random", "", 1, generateNumbers, 5, , 34)
results = WorksheetFunction.Transpose(Range("A1:A" & generateNumbers))
Range("A1:A" & generateNumbers).ClearContents '// If required
End Sub
變量results
現在將是結果的數組。
怎么樣:
Sub MAIN()
Dim x(1 To 100) As Variant
Dim Lambda As Double
Lambda = 34
For I = 1 To 100
x(I) = Poisson(Lambda)
Next I
End Sub
Public Function Poisson(L As Double) As Long
Dim I As Long, x As Double, expL As Double
expL = Exp(-L)
I = 0
x = 1
While x > expL
I = I + 1
x = x * Rnd()
Wend
Poisson = I - 1
End Function
雖然它很有趣,但它沒有毒性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.