我對編程頗爲陌生,我試圖確定下面的仿真在VBA中是否可行:蒙特卡羅仿真,涉及36個時間段,每個週期20個仿真變量,以及最多每期5000次模擬。然後對每個時期的模擬結果進行彙總,以創建36個分佈(每個時期一個分佈)。這似乎是一個3d數組,需要存儲變量,需要循環...等。我擔心計算時間。似乎這可能對vba來說太多了,所以我想獲得一些反饋。提前致謝。vba,模擬和數組
2
A
回答
2
是的,這是非常可行的。我一直都在做這樣的事情。
15-20年前我第一次開始使用VBA時,性能常常是一個問題,對於某些事情它仍然是一個問題。但受Moore's law魔術,VBA我2+歲的筆記本電腦編譯的C 20年來的速度相匹配前:
Sub quick()
Dim i As Long, sum As Long
Dim start As Double, elapsed As Double
start = Timer
For i = 1 To 100000000
sum = sum + 1
Next i
elapsed = Timer - start
Debug.Print "Sum of " & sum & " computed in " & elapsed & " seconds"
End Sub
輸出:
Sum of 100000000 computed in 0.765625 seconds
億穿過一個循環,在不到一秒。即使模擬需要數十億次的浮點運算,它也可能在不到一分鐘的時間內運行。除非你的5000個獨立模擬步驟中的每一個都需要數以億計的計算,否則你應該沒問題。
所以 - 開始編碼。如果您遇到問題,請發表其他問題。
一句警告:VBA很快。 Excel本身很快。連接兩者的橋樑(Excel對象模型)很慢。爲了獲得可接受的速度,應儘量減少工作表和VBA之間的數據傳輸。一個常見的初學者錯誤是將電子表格本身用作數據結構。將仿真本身寫入純VBA中,與電子表格進行交互,主要侷限於在仿真開始時讀取初始值,並在最後將輸出寫入電子表格。
相關問題
- 1. VBA隨機數在模擬
- 2. VBA隨機文字模擬
- 3. VBA函數和數組
- 4. 模擬Python數組中的PHP數組
- 5. 模擬二維數組1D
- 6. 模擬數組列表
- 7. VBA數組和操作符
- 8. 模擬和數字圖形/
- 9. 用int數組模擬數據分配
- 10. 駱駝:模擬和組件的路線
- 11. Java模擬組件
- 12. VBA類模塊排序數組訪問
- 13. Excel VBA中使用函數和數組
- 14. 模擬MS Access中的多線程(VBA)
- 15. Excel-VBA,樹模擬2變量
- 16. 模擬和CreateProcess
- 17. 模擬和NetworkCredential
- 18. 模擬和DirectoryEntry
- 19. VBA數組值
- 20. Excel VBA數組
- 21. 使用多維數組模擬死鎖
- 22. 用動態數組模擬單鏈表
- 23. 用Python中的「間隙」模擬數組
- 24. HTML表單數組提交模擬
- 25. 用javascript數組模擬飛機座位
- 26. 如何模擬字符串數組
- 27. 如何在rSpec中模擬數組?
- 28. 行計數組件的聚合模擬?
- 29. iOS模擬器和XCode模擬Compass?
- 30. 競技場模擬在VBA中啓動和關閉
是的,在VBA中是可行的,去做吧。 –