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