标题:monte carlo方法求面积的算法
取消只看楼主
jinh
Rank: 1
等 级:新手上路
帖 子:18
专家分:4
注 册:2011-5-31
结帖率:66.67%
 问题点数:0 回复次数:1 
monte carlo方法求面积的算法
程序代码:
#include<iostream>
#include<ctime>
#include<stdlib.h>
#define RAND_MAX 0x7FFF
using namespace std;

void main()
{
    double a,b;
    double x,y,area;//用于构造y与x的函数y=8x-x*x+7
    double count=0.0;//计数
    a=7.0;//x轴上
    b=9.0;//y轴上
    area=a*b;
    srand((unsigned)time(0));
    for(int i=0;i<10000;i++)
    {   
        //srand((unsigned)time(0));
        x=rand()/(double)(RAND_MAX/a);//函数用于返回一个在0~a的随机值
        y=rand()/(double)(RAND_MAX/b);//函数用于返回一个在0~b的随机值
        if(x>1&&x<a)
            if(y>0&&y<(8*x-x*x+7))
                count++;
   
    }
    cout<<count<<endl;
    area=area*count/10000;
    cout<<area<<endl;

}
搜索更多相关主题的帖子: color 
2011-11-26 10:06
jinh
Rank: 1
等 级:新手上路
帖 子:18
专家分:4
注 册:2011-5-31
得分:0 
Monte Carlo(蒙特卡洛)一个城市(赌城)的名字.该算法就是运用赌博的原理,随机扔东西,扔进该区域就记上一次,不在该区域就不计,但没次就能能进一个矩形或长方形区域里,该区域的面积很容易算出,但曲线,不规则的图型就不一定了,用积分是可以解决,但在<<随机过程>>本书中提到Monte Carlo方法,于是我就用老师的方法去弄了下,误差不是很大,毕竟扔了10000次!计算机多快啊,几秒钟就可以扔完了!
2011-11-27 00:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-356263-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.186396 second(s), 9 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved