蒙特卡洛算法——投点求圆周率Pi

蒙特卡洛算法是以概率和统计的理论、方法为基础的一种计算方法,将所求解的问题同一定的概率模型相联系;用电子计算机实现统计模拟和抽样,以获得问题的近似解,故又称统计模拟法或统计实验法。
蒙特卡洛算法:蒙特卡洛是美国摩纳哥的一个城市,以赌博闻名于世。蒙特卡洛算法借用这一城市的名称是为了象征性的表明该方法的概率统计特点。蒙特卡洛算法作为一种计算方法,是由S.M.乌拉姆和J.冯诺依曼在20世纪40年代中叶为研制核武器的需要而提出的。
蒙特卡洛方法的基本思想虽然早已被人提出,例如在古典概率中的著名法国数学家布丰利用投针求圆周率Pi值,却很少被使用。直到电子计算机出现后,使得人们可以通过电子计算机来模拟巨大数目的随机试验过程,使得蒙特卡洛方法得到广泛地应用。

用蒙特卡洛投点法计算Pi的值;

在一个边长为a的正方形内一均匀概率随机投点,该点落在此正方形的内切圆中的概率即为内切圆与正方形的面积比值,即:Pi * (a / 2)^2 : a^2 = Pi / 4。

%总的实验次数
n = input('请输入n:');
%落在圆中点的次数
m = 0;
%使用的圆的半径
a = 2;
%循环实验
for i = 1:n
    x = rand * a / 2;
    y = rand * a / 2;
    if (x^2 + y^2 <= (a/2)^2)
        m = m + 1;
    end
end
%显示结果
fprintf('当总实验次数n = %d时计算出来的圆周率:Pi = %d\n',n, 4 * m / n);

从实验结果可以分析得出:

1.随着投点的次数增加,圆周率Pi计算的准确率在增加;

2.但当次数达到一定规模时,准确率精度增加在减缓,其原因是生成的随机数是伪随机的,这也是蒙特卡洛算法达不到祖冲之求圆周率精度的内在原因;

3.同时在进行两次的1亿次投点中也可以发现,对于相同的投点数由于实验本身的随机性每次的实验结果是不同的。

  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值