- 6
- 0
- 约2.48千字
- 约 6页
- 2017-01-30 发布于重庆
- 举报
简单的随机数生成与测试程序
方法1
//线性同余法产生随机数
//直接使用rand函数
#includestdio.h
#includestdlib.h
#includetime.h
int main()
{
int i=0;
int r;
FILE *fp;
fp=fopen(D:\\out.txt,w);
srand(time(0));
for(;i1000;i++)
{
r=rand()%65535;
srand(r);
fprintf(fp,%5d\n,r%65535);
}
fclose(fp);
}
方法2
//线性同余法产生随机数
//添加质数
#includestdio.h
#includestdlib.h
#includetime.h
int main()
{
int i=0;
int r;
FILE *fp;
fp=fopen(D:\\out.txt,w);
srand(time(0));
for(;i1000;i++)
{
r=(rand()*541+9521)%65535;//加质数 线性方程
srand(73*r+43);//加质数 线性方程
fprintf(fp,%5d\n,r%65535);
}
fclose(fp);
}
方法3
//线性同余法产生随机数
//自己使用合理的质数构造线性同余方程
#includestdio.h
#includetime.h
int main()
{
int i=0;
int r;
FILE *fp;
fp=fopen(D:\\out.txt,w);
r=time(0)%65535;
for(;i10000;i++)
{
r=(r*541+9521)%65535;//加质数 线性方程
fprintf(fp,%5d\n,r);
}
fclose(fp);
}
方法4
//线性同余法产生随机数
//自己使用合理的质数和大数N 构造线性同余方程
#includestdio.h
#includetime.h
int main()
{
int i=0;
unsigned int r;
FILE *fp;
fp=fopen(D:\\out.txt,w);
r=time(0);
for(;i10000;i++)
{
r=r*541+9521;//加质数 线性方程
fprintf(fp,%u\n,r%65535);
}
fclose(fp);
}
结果表明,方法4是最好的,不会重复。前三种方法由于所模的大数N不够大,导致生成周期太小,容易重复。但是,个人认为,C语言中随机数生成函数比较难用,一不小心就容易得到不好的结果,也有人竟然不知道使用SRAND的。就算正确使用了线性同余法,生成的伪随机数有一定的线性相关性,性能也不是特别好,解决方法就是再对生成的数进行非线性变换。
//线性同余法产生随机数
//再经过非线性变换去除相关性
#includestdio.h
#includetime.h
int main()
{
int i=0;
unsigned int r;
int k=7331;
FILE *fp;
fp=fopen(D:\\out.txt,w);
r=time(0);
for(;i10000;i++)
{
r=r*7+9521;//加质数 线性方程
k=k*29+2251;
fprintf(fp,%u\n,(r^(2017+17*i)^k)%65535);
}
fclose(fp);
}
附带一个简单的随机数测试程序,有注释,很容易看懂!
//随机数测试求PI法
#includestdio.h
#includestdlib.h
#includetime.h
#define MAX 100000
int gen_rand(int a[],int num,int style)
{
//srand((int)time(0));
int i;
unsigned int r;
r=time(0);
for(i=0;inum;i++)
{
r=(r*541+9521)*r+431;
a[i]=r%65535;
}
return 0;
}
int test_rand(int a[],int num,int style)
{
float b[MAX];
float ans;
int i,t;
您可能关注的文档
最近下载
- 图案变化与统一课件设计.pptx VIP
- 2025年金融风险管理师买入看跌期权与卖出看跌期权策略专题试卷及解析.pdf VIP
- 2025年拍卖师拍卖谈判中的谈判记录与总结技巧专题试卷及解析.pdf VIP
- 2025年房地产经纪人客户隐私保护监管政策解读专题试卷及解析.pdf VIP
- 基于单片机的数控直流稳压电源的设计.docx VIP
- 县域消费扶贫与长效帮扶机制分析.pdf VIP
- 2025年项目管理专业项目交付成果验收检查表编制专题试卷及解析.pdf VIP
- 煤矿露天改扩建项目竣工验收报告.docx
- 人体解剖学复习测试有答案(二).doc VIP
- 基于stm32的智能小车设计毕业设计论文.docx VIP
原创力文档

文档评论(0)