簡體   English   中英

VBA中的隨機數生成器,使用Analysis Toolpack-VBA

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM