c语言随机一次生成多组整数
时间: 2024-11-18 13:27:37 浏览: 7
c语言生成随机数的方法(获得一组不同的随机数)
5星 · 资源好评率100%
在C语言中,如果你想要一次性生成多组整数,可以先定义一组结构体来存储每个数据集的信息,包括一组整数和对应的组别。然后在一个循环中调用随机数生成函数。以下是一个简单的例子:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define GROUPS 3
#define NUM_IN_GROUP 1000
typedef struct {
int numbers[NUM_IN_GROUP];
int group_size;
} DataSet;
void generate_random_data(DataSet *data_sets, int num_groups) {
FILE *output_files[GROUPS]; // 文件指针数组
srand(time(0));
for (int i = 0; i < num_groups; i++) {
data_sets[i].group_size = NUM_IN_GROUP;
// 创建新的文件并写入随机数
char filename[20];
sprintf(filename, "data_set_%d.txt", i+1);
output_files[i] = fopen(filename, "w");
for (int j = 0; j < data_sets[i].group_size; j++) {
fprintf(output_files[i], "%d\n", rand() % 100000); // 生成0到99,999之间的整数
}
fclose(output_files[i]);
data_sets[i].numbers = malloc(sizeof(int) * data_sets[i].group_size); // 分配内存
// 读回刚才写入的整数(假设文件已关闭)
fseek(output_files[i], 0, SEEK_SET);
fread(data_sets[i].numbers, sizeof(int), data_sets[i].group_size, output_files[i]);
fclose(output_files[i]);
}
}
int main() {
DataSet datasets[GROUPS];
generate_random_data(datasets, GROUPS);
// 现在你可以处理datasets数组中的各个数据集
for (int i = 0; i < GROUPS; i++) {
// 打印或进一步处理数据集内的整数
for (int j = 0; j < datasets[i].group_size; j++) {
printf("%d ", datasets[i].numbers[j]);
}
printf("\n");
}
// 清理内存
for (int i = 0; i < GROUPS; i++) {
free(datasets[i].numbers);
}
return 0;
}
```
在这个例子中,我们创建了三个数据集,每个都有1000个随机整数,并将它们保存在单独的文本文件中。每个数据集都在各自的文件中独立生成。
**相关问题--:**
1. 如果我想改变每个数据集中整数的数量,如何修改代码?
2. 这段代码中的`malloc()`和`free()`是如何工作的?
3. 怎样避免因文件操作导致的问题,比如文件打开失败?
阅读全文