24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1512  |  回复: 0

zzlovejyt

金虫 (著名写手)

[求助] 将C语言编写的蒙特卡罗方法求解圆周率改写为fortran语言

说明:本例中先取0到20000之间的随机数,然后再用这些点除以10000即可得到0到2之间的随机数,随机数精度为五位有效数。
以下是用c++语言模拟的求解圆周率的程序:

#include
#include    //setw函数,setprecision函数
#include       //time函数
#include     //srand,rand函数
using namespace std;
int main()
{
        int dwCount;
        cout<<"请输入打点的数目"<         cin>>dwCount;            //自己输入所要取的点数。
        double j,k;
        double x,y;
        double m=0;
    for(int i=0;i         {
                j=(int)(20000.0*rand()/(RAND_MAX+0));//取从0到20000之间的随机数
                k=(int)(20000.0*rand()/(RAND_MAX+0));//取从0到20000之间的随机数
            x=j/10000; /*用刚才所取得随机数除以10000就是0到2之间的随机数,5位有效数字,代表横坐标*/
                y=k/10000;   /*用刚才所取得随机数除以10000就是0到2之间的随机数,5位有效数字,代表纵坐标*/
                if(((x-1)*(x-1)+(y-1)*(y-1))<=1)    //判断所取得点是否在圆内
                {
           m++;   //如果这个所取得点在圆内,则计数器加1
                }       
                cout<         }
        cout<         double s=m/dwCount;    //用圆内的点数除以所取得点数,得到一个比例
        cout<     double t=4*s;    /*用刚才的点数乘以4就是圆的面积,因为这里做了特殊,所以这个值也就是圆周率*/
    cout< return 0;
}
回复此楼

» 猜你喜欢

人生苦短,何妨一试,每个读硕读博的人都曾在一段苦逼的岁月里像个二逼的坚持着!
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zzlovejyt 的主题更新
信息提示
请填处理意见