目录
1,rand函数
如图1所示,rand函数没有参数,返回值为int类型。
rand函数用于生成一个随机数,但是要搭配srand使用,否则当再次运行程序的时候就会出现和上一次一样的结果。例如下列程序:
#include <stdio.h>
int main()
{
int ret = rand();
printf("%d", ret);
return 0;
}
如图2所示,两次执行的结果都是41。
所以rand函数生成的是伪随机数,是通过某种固定的算法生成的数字,范围是(0, RAND_MAX),RAND_MAX的大小是0x7fff,十进制是32767。也就是rand生成的是0到32767之间的数字。
2,srand函数
srand函数设置随机数的生成器,也就是随机数的生成起点。srand函数的参数是unsigned int类型,返回值是void类型,如图3所示:
而srand函数作为生成器,其参数就作为一个种子控制rand生成随机数。所以srand的参数要一直变化,否侧就会出现重复生成一个数字的情况。这就出现了一个问题,我要生成一个随机数字的前提条件是有一个不断变化数。
3,time函数
time函数可以返回一个时间戳。时间戳的参数是指针类型,返回的就是时间戳time_t。我们这里就传入一个null。
而时间戳又是什么呢?时间戳就相当于一条道路上的路牌公里数,公里数告诉你离目标有多远,而时间戳返回的是当前计算机的时间,相较于计算机的起始时间的差值,如图5所示,显示从1970年到现在的时间,转化为一串数字,这样一来,我们之前想要的不断变化的数字就有了。
那么最终实现随机数的代码就如下:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
srand((unsigned int)time(NULL));
int ret = rand();
printf("%d\n", ret);
return 0;
}
注意:要加上头文件#include<stdlib.h>和#include<time.h>,这是srand函数和time函数所在的头文件。