2013-06-26 85 views
0

我有一個代碼,它使用蒙特卡洛模擬方法爲價格總利潤生成一個概率分佈。使用VBA的蒙特卡洛模擬方法

列F和G中的數據如何顯示利潤的累積分佈?

據我所知,這將使用被賦予

用INT給出的值的範圍計算的累積頻率(迭代/ 20 * I)。

,但我不知道它是如何與概率是盈利> = X列F

即。

如果我選擇100,用於我的迭代,

然後

TP(INT(迭代/ 20 * i))的

= TP(INT(100/20 * i))的

= TP(中間體(5 * i))的

等那隻顯示,

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

若設爲i = 5

TP(INT(迭代/ 20 * i))的

= TP(中間體(100/20 * ⅰ))

= TP(中間體(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

回答

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)。