hao3431

用C代码产生均匀分布随机数

0
阅读(3522)

用C代码产生均匀分布随机数 


原理:
1 x(i)=a*x(i-1)+1
2 对上面X(i)进行MOD,x(i)-(x(i)/1048576)*1048576,注意,2个整数相除得到的是整数余,而不是小数,除非整数后加.0
3 x(i)=x(i)/1048576.0,注意此时得到的是小数
4  t=a+(b-a)*x(i);便得到一个伪随即数
程序代码:
double uniform(double a,double b,long int *seed)
{
      double t;
      *seed=2045*(*seed)+1;
      *seed=*seed-(*seed/1048576)*1048576;
      t=*seed/1048576.0;
      t=a+(b-a)*t;
      return t;
}

%产生50个0-1之间均匀分布的随即数
#include <stdio.h>
void main()
{
        double a,b;       
        double x[50];
       long int s;
     a=0.0,b=1.0,s=13576;
      int i,j,k=0;
     for(i=0;i<10;i++)
         for (j=0;j<5;j++)
            {x[k]=uniform(a,b,&s);
             printf("%13.7f",x[k]);
              k++;
            }
}