用C代码产生均匀分布随机数
0赞
发表于 6/1/2010 5:20:29 PM
阅读(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;
}
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++;
}
}
