C语言中rand %函数怎么用
一、基础知识点
rand()函数
头文件:#include <stdlib.h>
作用:生成一个 0 ~ RAND_MAX 的随机整数(RAND_MAX 至少是32767)%取余运算符
rand() % n:把随机数限制在0 ~ n-1之间srand()设置随机种子
头文件:#include <time.h>
不加srand(time(NULL)),每次运行程序随机数序列完全一样。
二、完整示例1:0~9随机数(rand % 10)
#include <stdio.h>
#include <stdlib.h>
#include <time.h> // time()函数头文件
int main()
{
// 设置随机种子,只需要调用一次
srand((unsigned int)time(NULL));
// rand() % 10 → 范围:0、1、2 ... 9
int num = rand() % 10;
printf("0~9随机数:%d\n", num);
// 循环输出10个0~9随机数
printf("批量0~9随机数:");
for (int i = 0; i < 10; i++)
{
printf("%d ", rand() % 10);
}
return 0;
}
三、常用区间公式(rand + % 组合)
设 rand() % n 基础范围 [0, n-1],通过偏移得到任意区间:
- [0, a]:
rand() % (a + 1)
例:0~5 →rand() % 6 - [1, a]:
rand() % a + 1
例:1~10 →rand() % 10 + 1 - [min, max] 通用公式
例:3~7 →int num = rand() % (max - min + 1) + min;rand() % (7 - 3 + 1) + 3→rand() % 5 + 3
四、示例2:生成 1~100 随机数
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand((unsigned int)time(NULL));
// 1~100
int a = rand() % 100 + 1;
printf("1~100随机数:%d\n", a);
// 20 ~ 50
int b = rand() % (50 - 20 + 1) + 20;
printf("20~50随机数:%d\n", b);
return 0;
}
五、关键注意事项
- srand 只能写一次
不要把srand放进循环里,否则短时间内生成相同随机数。 - rand() 只能生成整数
无法直接生成小数,小数需要额外换算:// 0.0 ~ 1.0 随机小数 double f = (double)rand() / RAND_MAX; - rand()%n 轻微分布不均
RAND_MAX 不一定能被 n 整除,对普通练习无影响,高精度场景建议改用其他随机库。
六、完整综合案例:猜数字游戏
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand((unsigned int)time(NULL));
// 生成1~100答案
int ans = rand() % 100 + 1;
int guess;
printf("猜数字游戏!数字范围1~100\n");
while (1)
{
printf("请输入猜测数字:");
scanf("%d", &guess);
if (guess > ans)
printf("太大了!\n");
else if (guess < ans)
printf("太小了!\n");
else
{
printf("恭喜猜对!答案是:%d\n", ans);
break;
}
}
return 0;
}
浙公网安备 33010602011771号