全部版块 我的主页
论坛 金融投资论坛 六区 金融学(理论版) 金融工程(数量金融)与金融衍生品
10406 13
2010-06-03
这是个比较经典的例子,就是采用蒙特卡罗方法计算圆周率PI,计算原理就是采用圆的面积与相应外切正方形的面积比的4倍就是PI值,
因此采用随机模拟,统计落入圆内的数据点的数目与总数相比,使用VBA实现的例子源代码如下:

01.Option Explicit
02.'================================
03.' 蒙特卡罗方法计算圆周率示例
04.' Monte_Carlo_PI
05.'
06.'================================
07.Sub Monte_Carlo_PI()
08.    Dim i As Long
09.    Dim x As Double
10.    Dim y As Double
11.    Dim dist As Double
12.

13.    Dim cntInCircle As Long
14.    Dim iterMAX As Long
15.    iterMAX = 100000
16.    cntInCircle = 0
17.

18.    Randomize
19.    For i = 1 To iterMAX
20.        x = Rnd()
21.        y = Rnd()
22.        dist = Sqr((x - 0.5) ^ 2 + (y - 0.5) ^ 2)
23.        If dist <= 0.5 Then
24.            cntInCircle = cntInCircle + 1
25.        End If
26.    Next
27.    Debug.Print 4 * cntInCircle / iterMAX, _
28.      Application.WorksheetFunction.Pi(), _
29.      Abs(Application.WorksheetFunction.Pi() _
30.            - 4 * cntInCircle / iterMAX)
31.End Sub


注:增加iterMAX的值,可以更加逼近PI值
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2010-6-3 20:20:26
非常感谢分享。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-6-8 10:04:56
在这个平台上,大家互相学习
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-10-3 04:00:16
good thing, thx
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-10-3 21:22:17
好资料~谢谢分享!!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-11-14 23:24:54
呵呵,谢谢楼主的分享!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群