随机数生成
在 C 语言中,我们可以使用标准库 <stdlib.h>
中的两个函数 rand()
和 srand()
来生成随机数。
rand() 函数
rand()
函数用于生成一个随机整数,范围在 0 到 RAND_MAX
之间。RAND_MAX
是一个宏,值至少为 32767。
基本用法:
c
#include <stdlib.h>
int random_number = rand();
1
2
3
2
3
srand() 函数
srand()
函数用于设置随机数生成器的种子。如果不设置种子,程序每次运行时会生成相同的随机数序列。
基本用法:
c
#include <stdlib.h>
#include <time.h>
srand(time(NULL)); // 使用当前时间作为种子
1
2
3
4
2
3
4
生成指定范围的随机数
要生成指定范围内的随机数,可以使用取模运算符:
c
// 生成 0 到 99 之间的随机数
int random_0_to_99 = rand() % 100;
// 生成 1 到 100 之间的随机数
int random_1_to_100 = rand() % 100 + 1;
// 生成 a 到 b 之间的随机数
int random_a_to_b = rand() % (b - a + 1) + a;
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
生成浮点随机数
如果需要生成浮点数随机数,可以将 rand()
的结果除以 RAND_MAX
:
c
double random_float = (double)rand() / RAND_MAX; // 生成 0 到 1 之间的随机浮点数
double random_float_range = (double)rand() / RAND_MAX * (b - a) + a; // 生成 a 到 b 之间的随机浮点数
1
2
3
2
3
完整示例
c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
// 设置随机数种子
srand(time(nullptr));
// 输入范围
int a,b;
scanf("%d%d", &a, &b);
// 生成并打印 5 个整数随机数
for (int i = 0; i < 5; i++) {
printf("随机数 %d: %d\n", i + 1, a + rand() % (b - a + 1));
}
// 生成并打印一个浮点随机数
double random_float = (double)rand() / RAND_MAX * (b - a) + a;
printf("随机浮点数:%.2f\n", random_float);
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
其他
- 应该只在程序开始时调用一次
srand()
,而不是在循环中重复调用。