随机数的方式:
1、设置种子:srand(初始值)
2、获取随机数:rand();
引导案例:
通过for循环简单生成10个随机数
#include<stdio.h>
#include<stdlib.h> //添加包含随机数的库函数
int main() {
srand(1); //设置种子
for (int i = 1; i <= 10; i++) {
printf("%d\n", rand());
}
}
上面这个案例虽说是随机生成了10个数但却有两个弊端:
1、种子不变则生成的随机数是固定的
2、随机数的范围无法确定
解决方法如下:
1、种子的值固定不变则,可以将初始值变成时间戳
2、随机数的范围:
假设想要生成的范围为 num1 ----num2
则可以: rand()%((1+num2)-num1)+num1;
案例如下:
1、生成范围为12-87之间的随机数
2、生成范围为17-39之间的随机数且不包括39
#include<stdio.h> #include<stdlib.h> #include<time.h> //时间戳库函数 int main() { srand(time(NULL)); for (int i = 1; i <= 10; i++) { printf("%d\n", rand() % (1+89-12) + 12); } printf("---------------\n"); for (int i = 1; i <= 10; i++) { printf("%d\n", rand() % (39 - 17) + 17); //因为不包括39所以这里不加1 } }
进阶案例:
猜字游戏在范围为1-100中
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
//猜字游戏在1-100中去猜
int main() {
//先设置种子
srand(time(NULL));
//生成1-100之间的一个随机数;
int num = rand() % 100 + 1;
printf("请输入1-100中的一个整数\n");
int x; //定义一个变量用于键盘输入一个数
while (1) {
scanf("%d", &x);
if (num < x) {
printf("输入的数大了\n");
}
else if (num > x) {
printf("输入的数小了\n");
}
else if (num == x) {
printf("恭喜你猜对了\n");
break;
}
else {
printf("输入的数不符合要求请重新输入");
}
}
return 0;
}