当前位置:首页  生活常识

生活常识

蒙特卡洛模拟计算VaR(蒙特卡洛模拟)

2023-03-08 18:28:06
导读 你们好,最近小活发现有诸多的小伙伴们对于蒙特卡洛模拟计算VaR,蒙特卡洛模拟这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下

你们好,最近小活发现有诸多的小伙伴们对于蒙特卡洛模拟计算VaR,蒙特卡洛模拟这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。

1、 求解圆周率,在平面中随机抽样,分布着一定数量的点,点的分布服从均匀分布。通过求解点落在圆内的概率,即可求解圆的面积与平面面积的比值,而求解出圆周率。

2、 代码演示及结果

3、 x=numpy.random.uniform(0,1,100000)

4、 y=numpy.random.uniform(0,1,100000)

5、 计数=0

6、 对于范围内的我(len(x)):

7、 d=math.sqrt(幂((x[i]-0.5),2)幂((y[i]-0.5),2))

8、 如果d=0.5:

9、 计数=1

10、 PI=计数/浮点(len(x))*4

11、 delta=round((PI-math。PI)/数学。* 100,2)

12、 打印“str(len(x))”的str(count)位于圆内点:'

13、 '打印'计算出的圆周率是:'字符串(圆周率)

14、 "打印"的理论值是:" str(math.pi)

15、 "打印"的偏差是:" str(delta)% "

16、 '打印'圆的面积是:' str(count/float(len(x)))'使用蒙特卡罗。'

17、 '打印'圆的面积为:' str(round(math.pi*power(0.5,2),4))'使用理论值'

18、 从matplotlib .补丁导入圆

19、 将matplotlib.pyplot作为plt导入

20、 图=plt .图()

21、 ax=figure.add_subplot(111)

22、 ax.plot(x,y,' ro 'markersize=1)

23、 circle=Circle(xy=(0.5,0.5),半径=0.5,=0.5)

24、 ax.add_patch(圆形)

25、 plt.show()

26、 数值积分。

27、 对复杂函数的积分,可以使用此方法,误差是存在的。但是方便快捷。

28、 与第一个例子类似,也是抽样分析。分析点落在积分面积的概率。

29、 代码演示及结果

30、 a=numpy.linspace(0,1,10000)

31、 b=幂(一,2)

32、 图=plt .图()

33、 ax=figure.add_subplot(111)

34、 ax.plot(a,b,' b- ')

35、 plt.show()

36、 f=x:幂(x,2)

37、 x=numpy.random.uniform(0,1,1000000)

38、 y=numpy.random.uniform(0,1,1000000)

39、 计数=0

40、 对于范围内的我(len(x)):

41、 如果y[i]=f(x[i]):

42、 计数=1

43、 打印计数/浮动(len(x))

44、 打印1/浮动(3)

45、 人口问题模拟

46、 例如某些人生二胎是为了,生男孩,那么采用这种策略会影响男女性别比例吗?

47、 代码如下:

48、 n=10000

49、 比率=[]

50、 dic={ '男性'0,'女性'0}

51、 对于范围内的我(n):

52、 p=numpy.random.rand()

53、 如果p0.5:

54、 dic['男性']=1

55、 否则:

56、 dic['女性']=1

57、 而p0.5:

58、 p=numpy.random.rand()

59、 如果p0.5:

60、 dic['女性']=1

61、 否则:

62、 dic['男性']=1

63、 如果dic['女']!=0:

64、 ratio.append(dic['男性]/float(dic['女性']))

65、 绘图(比率,“b-”)

66、 通过模拟我们发现其实不会影响。男女比例大致为1:1

以上就是蒙特卡洛模拟这篇文章的一些介绍,希望对大家有所帮助。

免责声明:本文由用户上传,如有侵权请联系删除!