c语言中产生随机数不重复
时间: 2024-10-24 21:15:10 浏览: 57
C语言中产生随机数
3星 · 编辑精心推荐
在 C 语言中生成不重复的随机整数,可以采用一些技巧结合数组或者循环结构来实现。一种常见的做法是创建一个包含一定范围内的所有数字的数组,然后通过随机函数 `rand()` 和种子值 `srand()` 来生成索引,取出数组中的元素作为随机数。以下是基本步骤:
1. 定义一个大小为 `RAND_MAX+1`(`RAND_MAX` 是 `cstdlib` 库中定义的最大随机数)的数组,存储所有可能的随机数。
2. 使用 `srand(time(0))` 设置随机数种子,确保每次程序运行时得到不同的随机序列。
3. 调用 `rand()` 函数生成一个 [0, RAND_MAX] 区间的随机整数。
4. 将这个随机数转换为数组下标,并从数组中获取对应的值。
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_RANDOMS (RAND_MAX + 1)
int main() {
int random_array[MAX_RANDOMS];
srand(time(0)); // 初始化随机数种子
for (int i = 0; i < MAX_RANDOMS; ++i) {
random_array[i] = i;
}
// 需要生成 n 个不重复的随机数
int num_to_generate = 5;
while (num_to_generate--) {
int index = rand() % MAX_RANDOMS; // 随机下标
printf("Random number: %d\n", random_array[index]);
// 移除已选取的数,防止重复
memmove(&random_array[index], &random_array[index + 1], sizeof(random_array) - index - 1);
}
return 0;
}
```
阅读全文