1

モンテカルロ シミュレーション法を使用して、価格の総利益の確率分布を生成するコードがあります。

列 F と G のデータは、利益の累積分布をどのように表示しますか?

指定された値の範囲を使用して累積頻度を計算することを理解しています

Int(Iteration / 20 * i) で与えられます。

しかし、それが列FのProbability that Profit >= Xとどのように関連しているのかわかりません.

すなわち。

反復に 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 配列が本来あるべきサイズに設定されていないことが原因です: 上の行 ( ) を見逃したか、実行する前に変数 (= 100) にReDim TP(Iteration) As Double正しい値を割り当てていないためです。Iteration前述の再次元化。

于 2013-06-26T14:51:49.713 に答える