c语言生成一个随机不重复数
时间: 2024-09-11 20:16:21 浏览: 57
在 C 语言中生成一组随机不重复的整数,通常需要借助一些辅助数据结构和算法来实现。一种常见的方法是使用数组存储已生成的随机数,并通过洗牌(如 Fisher-Yates 洗牌算法)来达到随机无序的效果。以下是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ARRAY_SIZE 10 // 设置数组长度
int random_array[ARRAY_SIZE];
void shuffle(int arr[], int n) {
srand(time(0)); // 初始化随机种子
for (int i = n - 1; i > 0; i--) {
int j = rand() % (i + 1); // 随机索引
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
int main() {
if (ARRAY_SIZE > RAND_MAX) { // 如果数组大小超过最大随机数,设置合理大小
ARRAY_SIZE = RAND_MAX + 1;
}
for (int i = 0; i < ARRAY_SIZE; i++) {
random_array[i] = i; // 先填充数组,避免重复
}
shuffle(random_array, ARRAY_SIZE);
printf("Random array without duplicates: ");
for (int i = 0; i < ARRAY_SIZE; i++) {
printf("%d ", random_array[i]);
}
printf("\n");
return 0;
}
```
这个程序首先创建一个全排列的数组,然后使用 Fisher-Yates 算法打乱顺序,从而得到随机但不重复的整数序列。
阅读全文