产生随机数
产生随机数可以使用读系统时间求模,得到某个范围内的随机数;不过每次读系统时间要使用系统调用,应该
说是比较耗时的。
C语言标准库提供了rand和srand来产生随机数,头文件stdlib.h
int rand(void);
void srand (unsigned int seed);
rand函数产生一个0至RAND_MAX之间的随机数(RAND_MAX是宏定义,为0x7FFFFFFF,即有符合的最大整数);不过它产生随机数并不真正随机
下面的这段程序多次运行的结果相同
#include<stdlib.h>
int main(){ int i,j; for(i=0;i<10;i++){ j=rand()%10; printf("%d\n",j); } }
|
正因为这样,所以才需要srand函数,给定一个随机种子;对于给定的一个随机种子,调用rand获得一个随机序列,不同的随机种子可以获得不同的随即序列,这样只有随机种子不同,获得的随机序列肯定不同;未调用srand,则默认随机种子为1.
下面的程序多次运行得到不同的输出
#include<stdlib.h> #include<time.h>
int main(){ int i,j; srand((int)time((time_t *)0)); for(i=0;i<10;i++){ j=rand()%10; printf("%d\n",j); } }
|
time获得公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数
阅读(1274) | 评论(0) | 转发(0) |