AARiors 发表于 2020-5-4 17:51:03

c

题目: 给定抽取随机数的子函数
void rand(double *p, int n, double *r){
        int i,m;
    double s,u,v;
    s=65536.0; u=2053.0; v=13849.0;
    for (i=0; i<=n-1; i++)
      { *r=u*(*r)+v; m=(int)(*r/s);
      *r=*r-m*s; p=*r/s;
      }
}
表示从均匀分布U(0,1)里抽取n个随机数,存储在数组p里。
本题要求从以上均匀均匀里抽取1000随机数。事实上,这1000个数是从连续的均匀分布里抽取的。要求此均匀分布的样本均值和样本方差。要求设置种子数为1,例如
Main(){
   double r=1,p;
   int n=100;
   rand(p,100,&r);
}
我写的:
#include <stdio.h>
#include<stdlib.h>
#include<math.h>
void rand(double *p, int n, double *r)
{
    int i,m;
    double s,u,v;
    s=65536.0;
    u=2053.0;
    v=13849.0;
    for (i=0; i<=n-1; i++)
    {
      *r=u*(*r)+v;
      m=(int)(*r/s);
      *r=*r-m*s;
      p=*r/s;
    }
}

int main()
{
    double r=1,p,a,s=0,m=0,d;
    int i,n=1000;
    void rand(double *p, int n, double *r);
    rand(p,n,&r);
    for(i=0; i<n; i++)
    {
      s+=p;
    }
    a=s/1000;
    printf("%lf\n",a);
    for(i=0; i<n; i++)
    {
      m+=(p-a)*(p-a);
    }
    d=m/1000;
    printf("%lf\n",d);

    return 0;
}
问题:为啥我编译错误说rand conflicting?这道题怎么做呀?

PC_ 发表于 2020-5-8 11:12:29

本帖最后由 PC_ 于 2020-5-8 11:13 编辑

rand这个函数在<math.h>已经定义过了 , 程序其他地方没有问题 , 改过来之后输出结果是: 0.506232 和 0.085072
为了方便复制粘贴 , 我就直接把修改后的代码放上来吧:{:10_257:}

#include <stdio.h>
#include<stdlib.h>
#include<math.h>
void Rand(double *p, int n, double *r);
void Rand(double *p, int n, double *r)
{
        int i ,m;
        double s ,u ,v;
        s = 65536.0;
        u = 2053.0;
        v = 13849.0;
        for (i = 0; i <= n - 1; i++)
        {
                *r = u * (*r) + v;
                m = (int)(*r / s);
                *r = *r - m * s;
                p = *r / s;
        }
}

int main()
{
        double r = 1 ,p ,a ,s = 0 ,m = 0 ,d;
        int i ,n = 1000;
        Rand(p ,n ,&r);
        for(i = 0; i < n; i++)
        {
                s += p;
        }
        a = s / 1000;
        printf("%lf\n" ,a);
        for(i = 0; i < n; i++)
        {
                m += (p - a) * (p - a);
        }
        d = m / 1000;
        printf("%lf\n" ,d);
       
        return 0;
}
页: [1]
查看完整版本: c