C 语言的随机数生成函数174


C 语言提供了几个用于生成随机数的函数。最常用的函数是 rand() 和 srand()。rand() 函数生成一个伪随机整数,范围从 0 到 RAND_MAX(一个常量,表示可生成的最大随机数)。srand() 函数用于初始化随机数生成器,并用一个种子值对其进行设置,该种子值确定生成的随机数序列。

rand() 函数

rand() 函数通过使用线性同余发生器 (LCG) 算法生成伪随机数。LCG 算法使用以下公式生成随机数:```
rand_next = (a * rand_current + c) % m
```

其中:* rand_next 是下一个生成的随机数。
* rand_current 是当前的随机数。
* a、c 和 m 是 LCG 算法的常量。

在 C 语言中,LCG 算法的常量定义如下:```
#define RAND_MAX 2147483647
#define a 1103515245
#define c 12345
#define m 2147483648
```

srand() 函数

srand() 函数用于初始化随机数生成器,并用一个种子值对其进行设置。种子值是一个整数,用于确定生成的随机数序列。如果未调用 srand(),则 rand() 函数将使用默认种子值,导致生成相同的随机数序列。

使用 rand() 和 srand() 函数

要使用 rand() 和 srand() 函数,您可以按照以下步骤操作:
使用 srand() 函数初始化随机数生成器,并传入一个种子值。
使用 rand() 函数生成一个随机数。
根据需要重复步骤 2。

以下示例展示了如何使用 rand() 和 srand() 函数生成随机数:```c
#include
#include
int main() {
// 初始化随机数生成器
srand(time(NULL));
// 生成 10 个随机数
for (int i = 0; i < 10; i++) {
// 生成一个随机数,范围为 0 到 RAND_MAX
int random_number = rand();
// 打印随机数
printf("%d", random_number);
}
return 0;
}
```

其他随机数生成函数

除了 rand() 和 srand(),C 语言还提供了其他一些用于生成随机数的函数:* random():生成一个双精度浮点数,范围从 0.0 到 1.0。
* rand_r():生成一个伪随机整数,并以指针作为参数将种子值传递。
* initstate_r() 和 setstate_r():分别用于初始化和设置随机数生成器状态。

C 语言的随机数生成函数是用于生成伪随机数的有用工具。通过了解如何使用这些函数,您可以为您的程序添加随机性元素,例如生成随机数、模拟概率事件以及创建游戏和模拟。

2024-10-28


上一篇:C 语言中的 for 循环

下一篇:二位字符数组在 C 语言中的输出