C语言生成不重复伪随机数的代码示例

5星 · 超过95%的资源 7 下载量 55 浏览量 更新于2024-09-01 收藏 61KB PDF 举报
"C语言生成随机数的示例代码分享,包含一个不重复产生随机数的程序,使用了srand()和rand()函数,以及逻辑判断确保随机数的唯一性。" 在C语言中,生成随机数是编程时常见的需求,特别是在模拟、游戏或测试等领域。`rand()`函数是C标准库中的一个功能,它用于生成一个伪随机数。这里的“伪随机”意味着生成的序列看起来是随机的,但实际上遵循一定的可预测模式。`rand()`函数返回的随机数范围通常是从0到`RAND_MAX`之间的一个整数,具体的`RAND_MAX`值依赖于实现。 为了使`rand()`生成的随机数序列每次运行程序时都不相同,我们可以使用`srand()`函数来设置随机数生成器的种子。在上面的示例中,`srand((unsigned)time(NULL))`使用当前时间作为种子,因为时间通常是不可预测的,这样可以确保每次程序运行时得到不同的随机数序列。 代码的核心部分在于生成不重复的随机数。首先,使用`rand()%41+1`生成1到40之间的随机数,避免生成8和36(可能有特殊用途)。然后通过一个`do-while`循环检查生成的数字是否已经出现过或者等于8或36,如果满足这些条件,就继续生成新的随机数。`flag`变量用于标记是否找到了一个新的、可用的随机数,如果找到,则将其存储在数组`a`中。 在主循环中,用户可以输入一个最大值(1到39之间),程序会生成这个数量的不同随机数并显示出来。如果用户输入的不是'q',程序会提示重新输入,否则程序结束。使用`goto`语句在这里是为了简化流程控制,虽然在某些情况下`goto`语句被认为是不良编程习惯,但在这种小型示例中,它的使用是可以接受的。 总结来说,这个C语言示例提供了生成不重复随机数的方法,使用了标准库中的`rand()`和`srand()`函数,并结合逻辑判断实现了特定需求。理解这段代码有助于掌握C语言中如何生成和处理随机数,以及如何实现特定条件下的逻辑控制。