产生随机数:srandom和random
一、说明
-
生产随机数需要种子(Seed),且如果种子固定,random()每次运行生成的随机数(其实是伪随机数)也是固定的;因为返回的随机数是根据稳定的算法得出的稳定结果序列,并且Seed就是这个算法开始计算的第一个值。
-
srandom()可以设定种子,比如srandom(0) 、srandom(1)等等。如果srandom设定了一个固定的种子,那么random得出的随机数就是固定的;
-
如果程序运行时通过srandom(time(NULL))设定种子为随机的,那么random()每次生成的随机数就是非固定的了。
二、代码示例
1. 测试随机数,种子固定,得出的随机数是固定的
代码如下(示例):
/*
测试随机数,种子固定,得出的随机数是固定的
*/
void testRandom(){
srandom(1);
printf("RAND_MAX=%d\n",RAND_MAX);
for(int i=0;i<10;i++){
printf("i=%d random value=%ld \n",i+1,random());
}
2.测试随机数,种子是随机的,得出的随机数是不固定的
代码如下(示例):
/*
测试随机数,种子是随机的,得出的随机数是不固定的
*/
void testRandom2(){
srandom(time(NULL));
printf("RAND_MAX=%d\n",RAND_MAX);
for(int i=0;i<10;i++){
printf("i=%d random value=%ld \n",i+1,random());
}
}
参考文献
本文参考引用CSDN博主「程序员长弓」的原创文章。原文链接:https://blog.csdn.net/m_changgong/article/details/7797451