1。生产随机数需要种子(Seed),且如果种子固定,random()每次运行生成的随机数(其实是伪随机数)也是固定的;因为返回的随机数是根据稳定的算法得出的稳定结果序列,并且Seed就是这个算法开始计算的第一个值。
2。srandom()可以设定种子,比如srandom(0) 、srandom(1)等等。如果srandom设定了一个固定的种子,那么random得出的随机数就是固定的;
如果程序运行时通过srandom(time(NULL))设定种子为随机的,那么random()每次生成的随机数就是非固定的了。
测试例子如下:
/*
测试随机数,种子固定,得出的随机数是固定的
*/
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());
}
}
/*
测试随机数,种子是随机的,得出的随机数是不固定的
*/
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());
}
}