人工智能基础实验报告

蒙特卡洛算法

目 录

蒙特卡洛算法 ····································································································1
概述:·············································································································· 1
思考步骤: ···········································································································1
应用: ··············································································································1
特点: ··············································································································2
参 考 资 料 ·······································································································3

概述:

蒙特卡罗法(Monte Carlo method)也称统计模拟法、统计试验法。是把概率现象作为研究对象的数值模拟方法。是按抽样调查法求取统计值来推定未知特性量的计算方法。蒙特卡罗是摩纳哥的著名赌城,该法为表明其随机抽样的本质而命名。故适用于对离散系统进行计算仿真试验。在计算仿真中,通过构造一个和系统性能相近似的概率模型,并在数字计算机上进行随机试验,可以模拟系统的随机特性。
蒙特卡洛方法的理论基础是大数定律。大数定律是描述相当多次数重复试验的结果的定律,在大数定理的保证下:
利用事件发生的 频率 作为事件发生的 概率 的近似值。
所以只要设计一个随机试验,使一个事件的概率与某未知数有关,然后通过重复试验,以频率近似值表示概率,即可求得该未知数的近似值。
样本数量越多,其平均就越趋近于真实值。
此种方法可以求解微分方程,求多重积分,求特征值等。

思考步骤:

蒙特卡罗方法一般分为三个步骤,包括构造随机的概率的过程,从构造随机概率分布中抽样,求解估计量。

1 构造随机的概率过程

对于本身就具有随机性质的问题,要正确描述和模拟这个概率过程。对于本来不是随机性质的确定性问题,比如计算定积分,就必须事先构造一个人为的概率过程了。它的某些参数正好是所要求问题的解,即要将不具有随机性质的问题转化为随机性质的问题。如本例中求圆周率的问题,是一个确定性的问题,需要事先构造一个概率过程,将其转化为随机性问题,即豆子落在圆内的概率,而π就是所要求的解。

2 从已知概率分布抽样

由于各种概率模型都可以看作是由各种各样的概率分布构成的,因此产生已知概率分布的随机变量,就成为实现蒙特卡罗方法模拟实验的基本手段。如本例中采用的就是最简单、最基本的(0,1)上的均匀分布,而随机数是我们实现蒙特卡罗模拟的基本工具。

3 求解估计量

实现模拟实验后,要确定一个随机变量,作为所要求问题的解,即无偏估计。建立估计量,相当于对实验结果进行考察,从而得到问题的解。如求出的近似π就认为是一种无偏估计。
应用:
求圆周率。计算圆周率时可以考虑将一个单位圆放在一个正方形中,从而将求解圆周率转化为计算出圆和正方形面积的比例。由于C语言效率更高,就用C语言来实现了。

/* Note:Your choice is C IDE */
#include "stdio.h"
#include "stdlib.h"
#include

void main()
{
	int j=10;
	//运行十亿次
	while(j-->0)
	{
		int i=1,count=0;
		while(i++<=100000000)//一亿
		{
			double a=rand()*1.0/(RAND_MAX+1.0);
			double b=rand()*1.0/(RAND_MAX+1.0);
			
			if(sqrt(a*a+b*b)<1)
			{
				count++;
			}
	}
	printf("%lf\t",count*4.0/i);}
}

运行结果:

在这里插入图片描述

特点:

一般情况下,蒙特卡罗算法的特点是,采样越多,越近似最优解。
优点:对于具有统计性质的问题可以直接进行解决,对于连续性的问题也不必进行离散化处理。
缺点:
1、对于确定性问题转化成随机性问题做的估值处理,丧失精确性,得到一个接近准确的N值也不太容易。
2、如果解空间的可能情况很多则很难求解(NP问题)

参 考 资 料

[1] 萧浩辉. 决策科学辞典: 人民出版社, 1995
[2]陈磊,姚伟召,郭全魁,王秀华著,效能评估理论、方法及应用,北京 邮电大学出版社,2016.01
[3] 百度百科 蒙特卡罗法 2022年12月

你可能感兴趣的:(人工智能,算法,机器学习)