平均分布随机数
混合同余法
A=2045,C=1,M=2^20
zi=a+(b-a)*yi
产生a到b区间随机数zi
uniform.c
double uniform(a,b,seed)double a,b;long int * seed;{double t;double M=pow(2,20);*seed=2045*(*seed)+1;*seed= *seed-(*seed/(int)(M))*(int)(M);//1048576t=(*seed)/(double)(M);t=a+(b-a)*t;return t;}
main.c
#include "stdio.h"#include "math.h"#include "uniform.c"main(){double a,b,x;int i,j;long int s=13579;printf("a=");scanf("%lf",&a);printf("b=");scanf("%lf",&b);double uniform(double,double,long int *);for(i=0;i<2;i++){for(j=0;j<5;j++){x=uniform(a,b,&s);printf("%13.7f",x);}printf("\n");}}