一、rand()函数
语法形式:
int rand(void)
1、返回类型为整型
2、rand函数返回的数是伪随机的,是通过某种算法来生成的随机数,并非真正的随机
3、返回值范围:0 ~ RAND_MAX 之间,RAND_MAX的值依赖编译器实现,大部分是32767
4、头文件:stdilb.h
比如:
但此时你再打印几次,你会发现生成的随机数还是和上次一样,并没有实现真正的随机,rand函数是通过算法里的”种子“来随机生成的,而默认”种子“是1。
而种子的生成是由srand()函数实现的。
二、srand()函数
语法形式:
void srand(unsigned int seed)
所以只要让函数里的种子(seed)随机就行了,而一般用时间来作为种子,因为时间是变化的,而这又要提到一个新概念了
时间戳:是表示特定时间点的数字,以自1970年1月1日减去当前的时间,单位是秒
三、time() 函数
语法形式:
time_t time(time_t* timer)
1、返回类型 time_t 就是返回个整型
2、参数 timer 为NULL就把当前的时间差值返回去
3、头文件:time.h
所以只需要把srand放到rand前先调用,并把时间戳作为返回值设置种子就好了
因为前面srand的参数是unsigned int ,所以强制类型转换一下就好了
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
srand((unsigned int)time(NULL));
printf("%d\n", rand());
printf("%d\n", rand());
printf("%d\n", rand());
printf("%d\n", rand());
return 0;
}