VBA中使用Analysis Toolpack-VBA的随机数生成器

我用下面这行生成泊松随机数:

Application.Run("Random", "", 1, 100, 5, , 34) 

这将产生100个随机数与Lambda(34)在Excel表中。 我想将输出保存到一个variables,而不是工作表。 我试过了

 X=Application.Run("Random", "", 1, NSim, 5, , 34) 

我没有得到任何错误,但没有保存在“X”。 你能帮我解释一下如何将结果保存在一个variables中。 谢谢

看起来像函数返回一个布尔值而不是一个数组数组,只接受范围作为其参数之一的输出。

它看起来像Random是一个子例程,除非你有权访问底层代码,你不能直接这样做。

你可以做什么(尽pipe倒退)是让子运行,然后将结果分配给一个variables,并从表中删除它:

 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 

variablesresults现在将成为结果数组。

怎么样:

 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 

虽然它是沉着的,但没有毒性。