1、int rand()产生一个从0到最大整数之间的一个随机数,但是每次程序启动后产生的随机数在时间顺序上都是一样的。
如:
#include <stdio.h>
#include <stdlib.h>
int main(){
while(1){
int i=rand();
printf("%d\n",i);
sleep(1);
}
}
运行结果:
2、long int random()产生一个从0到最大的长整形数之间的一个随机数。同rand一样,它在时间顺序上的排列也是一样的。
如:
#include <stdio.h>
#include <stdlib.h>
int main(){
while(1){
long int i=random();
printf("%ld\n",i);
sleep(1);
}
}
运行结果:
可以看出来,在普通的32位机上rand和random产生的随机数是一样的。
3、void srand(unsigned int seed)设置随机数产生的种子,这样每次启动进程时产生的随机数在时间顺序上就不一样了。
如:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
while(1){
srand(time(0));
int i=rand();
printf("%d\n",i);
sleep(1);
}
}
运行结果:
4、void srandom(unsigned int seed)和srand的作用几乎相同。
总之:使用的rand或者random之前,一般使用time(0)getpid()设置随机种子.否则默认种子就是1,则每次产生的随机数在时间顺序上是一样的。