目录
1 rand()函数
2 srand()函数
1 rand()函数
int rand (void);
rand函数可以生成一个随机整数,范围在 0 ~ RAND_MAX,RAND_MAX的值是0x7fff,换算成十进制是32767。
但是我们发现使用此函数生成随机数,每次生成的随机数都是一样的,都是如下图的顺序的几个数
实际上rand()产生的随机数是伪随机数,是根据一个数值按照某个公式推算出来的,这个数值被称为“种子”,种子和随机数的关系是一种正态分布。种子在每次启动计算机是随机的,一旦启动种子就不会改变,生成的随机数也就是固定的了。
2 srand()函数
srand函数用于给rand函数设定种子
void srand (unsigned int seed);
srand需要无符号整数作为参数,传入不同的值才能生成不同的种子,这里我们一般用时间戳(time函数会返回一个时间戳),因为时间是随时在改变的。
time函数的返回值是time_t类型的值,我们要强转为无符号整数类型,或者无符号类型,如下:
srand((unsigned)time(NULL));
注意:srand函数在一个工程中设置一次就行,也就是说,即使rand函数执行很多次,srand也只要调用一次就行。
生成随机数的范围,可以在rand函数后面取余,比如:
int a = rand() % 10; //产生0~9的随机数