rand函数的使用有两个要点
①需要头文件<stdlib.h>
②限制随机数的范围:rand() % (b-a+1)+ a;这里a和b表示随机数的范围,如下示例的随机数范围为1~100
#include <stdio.h>
#include <stdlib.h>
int main(){
int a = rand() % (100-1+1)+ 1;
printf("%d",a);
}
优化
时隔十天,当我再次使用这个程序得到随机数时,发现每次所得到的随机数都是一样的,并不具备我想要的随机性,查询相关资料后,发现原因是因为srand()函数的种子没有改变,所以每次产生的随机数是一样的,所以,我们可以做如下修改:
#include <stdio.h>
#include <stdlib.h>
int main(){
unsigned int seed;//seed种子是无符号整型
printf("Please input the seed:\n");
scanf("%u",&seed);
srand(seed);
int a = rand()%(5-1+1)+ 1;
printf("%d",a);
}
再优化
以上方法已经可以解决我们需要的随机性问题,但是每次都需要输入一个种子数十分麻烦,所以我们可以用到time()函数,该函数返回一个值,即格林尼治时间1970年1月1日00:00:00到当前时刻的时长,时长单位是秒,需要头文件<time.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
srand(time(0));
int a = rand()%(5-1+1)+ 1;
printf("%d",a);
}