我有一个代码,使用蒙特卡罗模拟方法生成价格总利润的概率分布。
F和G列中的数据如何显示利润的累积分布?
据我所知,它会使用给定的值范围来计算累积频率
由Int(Iteration / 20 * i)给出。
但是我没有看到它与F列中的利润概率> = X有什么关系。
即
如果我为我的迭代选择100,
然后
TP(Int(Iteration / 20 * i))
= TP(Int(100/20 * i))
= TP(Int(5 * i))
所以它只会显示,
TP(5),TP(10),TP(15)和TP(20)
如果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
答案 0 :(得分: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)。