C中使用rand函数来生成一个随机数
int rand(void);
这个随机数其实是伪随机数,是通过一定的公式方法计算出来的
生成数的范围是从0到RAND_MAX,一般为0到32767
rand函数是一个库函数,使用时要包含头文件stdlib.h
这里调用两次rand函数演示一下
int main()
{
for(int i = 0; i < 5; i++)
{
int a = rand();
printf("%d\n",a);
}
return 0;
}
可以看到两次生成的随机数值是一样的,其原因正是rand函数是靠一个公式来计算一个值作为随机数的
为了避免出现这种情况,我们需要用srand函数来设置一个“种子”,通过种子的变化,使每次计算的随机数值也变化起来
也就是说,如果每次种子的取值不一样,随机数值就会不一样。那么用什么来实现种子的变化呢?答案是使用时间戳
时间戳是指从1970年1⽉1⽇0时0分0秒开始,到程序运行为止,所经过的秒数,通过time函数来调用
time函数包含于头文件time.h,返回类型为time_t,本质上也是整型
这样我们就可以对上面的代码进行一下改造,让每次程序运行后生成的随机数值不同
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand((unsigned int)time(NULL));
for(i = 0; i < 5; i++)
{
int a = rand();
printf("%d\n",a);
}
return 0;
}
可以看到每次成语运行后生成的随机数值确实发生了改变
到此为止,运用rand/srand/time函数就可以生成需要的随机数了