C语言实现随机数生成:srand与rand函数应用

4星 · 超过85%的资源 需积分: 17 28 下载量 188 浏览量 更新于2024-11-01 收藏 2KB TXT 举报
在C语言中,生成随机数是一项常见的任务,用于模拟、测试和各种算法中。要实现随机数生成,C语言提供了一个名为`rand()`的函数,它返回一个伪随机整数,范围从0到`RAND_MAX`。`RAND_MAX`是一个预定义的常量,表示`rand()`函数能产生的最大值。在示例代码中,`RAND_MAX`被定义为0x7FFF,这代表`rand()`可以生成的最大32位无符号整数是32767。 在使用`rand()`之前,通常需要使用`srand()`函数来设置随机数生成器的种子。种子决定了随机数序列的初始状态。如果不设置种子,`rand()`会默认使用1作为种子,这样每次程序运行时生成的随机数序列将是一样的。为了得到不同的随机数序列,我们通常将当前时间用作种子,因为它是唯一的。`time(NULL)`函数返回当前时间(以秒为单位),将其转换为无符号整数后传给`srand()`,确保每次运行程序时都能得到不同的随机数。 以下是一个简单的例子,展示了如何使用`rand()`和`srand()`: ```c #include <stdlib.h> #include <stdio.h> #include <time.h> int main(void) { int i; // 使用当前时间初始化随机数生成器 srand((unsigned) time(NULL)); // 输出10个随机数 for (i = 0; i < 10; i++) { printf("%6d\n", rand()); } return 0; } ``` 在这个程序中,首先调用`srand((unsigned)time(NULL))`,用当前时间设置随机数生成器的种子。然后,`for`循环内的`printf`语句会打印出10个由`rand()`生成的随机数,每个数字占据6列宽度。由于每次运行时种子都不同,所以生成的随机数序列也会不同。 `rand()`和`srand()`是C语言中生成随机数的基本工具。`rand()`用于产生伪随机数,而`srand()`用于设置随机数生成器的种子,确保每次运行程序时都可以得到新的随机数序列。在实际编程中,这两个函数的组合能够满足大部分随机数生成的需求。