素数模乘同余法求随机数
利用C 语言编程输出随机数,程序如下:
#include
#include
#define a 16897
#define B 9110.639821
void main()
{int Prime(int n);
unsigned long int b,i;
unsigned long int x[369];
unsigned float r[369];
double m1;long m;int x1[369];
FILE *fp=fopen("suijishu.txt","w+"),*fp1=fopen("fzjtl.txt","w+"); m1=pow(2,31)-1;m=m1;
printf("please input a prime number:");
scanf("%d",&b);
if (Prime(b))
{x[0]=b;
for(i=0;i
{x[i+1]=a*x[i]%m;
r[i]=(float)x[i]/m;
printf("%ld\t%f\n",x[i],r[i]);
fprintf(fp,"%f\ ",r[i]);
if((i+1)%10==0)
fprintf(fp,"\n");
x1[i]=B*sqrt(-log(r[i]));
fprintf(fp1,"%d\ ",x1[i]);
}
fclose(fp);
}
else
printf("It's not a prime number"); }
int Prime(int n)
{
int i;
for(i=2; i
if(n%i==0)
return 0;
return 1;
}
利用DOS 界面把数据输出到文本文件。
素数模乘同余法求随机数
利用C 语言编程输出随机数,程序如下:
#include
#include
#define a 16897
#define B 9110.639821
void main()
{int Prime(int n);
unsigned long int b,i;
unsigned long int x[369];
unsigned float r[369];
double m1;long m;int x1[369];
FILE *fp=fopen("suijishu.txt","w+"),*fp1=fopen("fzjtl.txt","w+"); m1=pow(2,31)-1;m=m1;
printf("please input a prime number:");
scanf("%d",&b);
if (Prime(b))
{x[0]=b;
for(i=0;i
{x[i+1]=a*x[i]%m;
r[i]=(float)x[i]/m;
printf("%ld\t%f\n",x[i],r[i]);
fprintf(fp,"%f\ ",r[i]);
if((i+1)%10==0)
fprintf(fp,"\n");
x1[i]=B*sqrt(-log(r[i]));
fprintf(fp1,"%d\ ",x1[i]);
}
fclose(fp);
}
else
printf("It's not a prime number"); }
int Prime(int n)
{
int i;
for(i=2; i
if(n%i==0)
return 0;
return 1;
}
利用DOS 界面把数据输出到文本文件。