| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 360 人关注过本帖
标题:请高手解答一二
只看楼主 加入收藏
jeremysong
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2009-6-19
结帖率:100%
收藏
 问题点数:0 回复次数:2 
请高手解答一二
向平面区域1*1的面积内随机投点,点落到曲线y=pow(2.71828,-x*x)以下的概率   随机取1000个点   下面是我的程序可答案老是1,这明显不对啊  请指教一二
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#define e 2.71828
double F(double a)
{
    double b;
    b=pow(e,-a*a);
    return b;
}
main ()
{
    int i,num=0;
    double m[1000],n[1000],y,y1,result;
    for(i=0;i<1000;i++)
        srand(time(NULL)+i);
        m[i]=rand()%1000+1;
    for(i=0;i<1000;i++)
        srand(time(NULL)+i);
        n[i]=rand()%1000+1;
    y=F(m[i]/1000);
    y1=n[i]/1000;
    for(i=0;i<1000;i++)
    if(y1<y)
            num++;
        else
            continue;
    result=num/1000;
    printf("积分结果为:%f\n",result);
}
搜索更多相关主题的帖子: 解答 
2009-10-20 20:16
jeremysong
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2009-6-19
收藏
得分:0 
那位来给我提点建议啊
2009-10-21 15:34
jeremysong
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2009-6-19
收藏
得分:0 
哈哈  我的问题解决了 一下是新的程序
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#define e 2.71828                                //定义e的数值
#define p 1000                                     //确定要试验的随机点个数
double F(double a)                                //定义一个题中要求的函数
{
    double b;
    b=pow(e,-a*a);
    return b;
}
main ()
{
    int i,num=0;
    double m[p],n[p],y[p],result;
    srand((unsigned)time(NULL));         
    for(i=0;i<p;i++)                            //产生第一组随机数代表自变量x及随机点的横坐标
        m[i]=((double)rand())/RAND_MAX;   
    for(i=0;i<p;i++)                            //产生第二组随机数代表随机点的纵坐标
        n[i]=((double)rand())/RAND_MAX;
    for(i=0;i<p;i++)                            //产生第三组随机数为函数F对应x的应变量
    y[i]=F(m[i]);
    for(i=0;i<p;i++)                            //打印出随机点的纵坐标和随机点自变量(x)所对
    {
        printf("y%d-%f\t",i,y[i]);                    //应的函数值
        printf("n%d-%f\t",i,n[i]);
    }
    for(i=0;i<p;i++)
    {if(y[i]<n[i])
            num++;
        else
            continue;
    }
    result=(float)num/p;
    printf("符合条件的随机点个数为:%d\n",num);    //打印出符合条件的随机点个数
    printf("积分结果为:%g\n",result);
}
 
 
原来是要把num的数据类型给改掉 就是红色的那个  问题解决!!
哦哦
2009-10-27 19:32
快速回复:请高手解答一二
数据加载中...
 
   



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

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