1

我有一个代码,它使用蒙特卡罗模拟方法为价格的总利润生成概率分布。

F和G列的数据如何显示利润的累积分布?

我知道它将使用给定的一系列值来计算累积频率

由 Int(Iteration / 20 * i) 给出。

但我看不出它与 F 列中利润 >= X 的概率有何关系。

IE。

如果我为我的迭代选择 100,

然后

TP(Int(Iteration / 20 * i))

= TP(Int(100 / 20 * i))

= TP(Int(5 * i))

所以它只会显示,

TP(5), TP(10) , TP(15) and TP(20)

if i = 5

TP(Int(Iteration / 20 * i))

= TP(Int(100 / 20 * i))

= TP(Int(5 * 5))

我得到超出范围的 TP(25)。

这是我感到困惑的代码部分:

For i = 1 To 20
Cells(i + 3, 6) = 1 - (0.05 * i)
Cells(i + 3, 7) = TP(Int(Iteration / 20 * i))

Cells(i + 3, 14) = Iteration / 20 * i


Next i

http://www.anthony-vba.kefra.com/vba/vba12.htm

4

1 回答 1

0

从您提供的代码和数据来看,不应该有任何超出范围:

ReDim TP(Iteration) As Double 'Is defined as function of the number of iterations (100 here)

Cells(i + 3, 6) = 1 - (0.05 * i) 'Writes to the F column until row 8 
Cells(i + 3, 7) = TP(Int(Iteration / 20 * i)) 'Writes to the G column until row 8

'The maximum value for  TP(Int(Iteration / 20 * i)) is 25, below 100 

'Actually, this array should be dimensioned in a more direct way like ReDim TP(Int(Iteration / 20 * i)) As Double 

如果你得到一个越界错误是因为 TP 数组没有按应有的尺寸标注:要么是因为你错过了上面的行 ( ReDim TP(Iteration) As Double),要么是因为你在做之前没有为变量分配正确的值Iteration(= 100)前面提到的尺寸调整。

于 2013-06-26T14:51:49.713 回答