随机生成1M数据C语言代码
时间: 2024-09-14 17:11:22 浏览: 74
在C语言中,生成大量随机数通常会涉及到使用`<stdlib.h>`库中的`srand()`和`rand()`函数。以下是一个简单的示例,展示了如何生成100万个随机整数(这里仅做演示,实际需要大量内存可以考虑分批生成并存储),假设范围在1到100之间:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NUM_DATA 1000000 // 要生成的数据量
int main() {
srand(time(0)); // 设置随机种子,保证每次运行结果不同
int data[NUM_DATA]; // 存放随机数的数组
for (size_t i = 0; i < NUM_DATA; ++i) {
data[i] = rand() % 100 + 1; // 生成1到100之间的随机数
}
// 这里你可以选择将数据保存到文件、数据库或其他合适的地方
// 为了简洁,我们只打印前几个数
for (size_t i = 0; i < 5; ++i) {
printf("%d ", data[i]);
}
printf("\n//... 打印剩余数据或处理...\n");
return 0;
}
```
请注意,生成1M(即1,048,576)个数据可能会占用较大的内存,对于这样的大数据量,一般建议使用更高效的方式来处理,比如通过循环生成并在每个迭代过程中立即处理或存储。
相关问题
学生信息管理系统,随机生成学生信息,C语言代码
### 使用C语言实现学生信息管理系统的随机生成功能
为了创建一个能够随机生成学生信息的学生信息系统,可以采用如下方法。此程序不仅实现了基本的信息录入和显示功能,还加入了随机化模块以自动生成学生的姓名、年龄、性别等属性。
下面是一份简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define MAX_STUDENTS 100
typedef struct {
char name[50];
int age;
char gender; // 'M' or 'F'
} Student;
void generateRandomName(char *name);
char getRandomGender();
int getRandomAge();
// 主函数入口
int main() {
srand(time(NULL)); // 初始化随机种子
Student students[MAX_STUDENTS];
for (int i = 0; i < MAX_STUDENTS; ++i) {
generateRandomName(students[i].name);
students[i].age = getRandomAge();
students[i].gender = getRandomGender();
printf("Student %d:\n", i + 1);
printf("Name: %s\n", students[i].name);
printf("Age : %d years old\n", students[i].age);
printf("Gender: %c\n\n", students[i].gender == 'M' ? "Male" : "Female");
}
}
// 随机生成名字的方法
void generateRandomName(char *name) {
const char* firstNames[] = {"张三", "李四", "王五"};
const char* lastNames[] = {"赵", "钱", "孙"};
strcpy(name, lastNames[rand() % sizeof(lastNames)/sizeof(*lastNames)]);
strcat(name, firstNames[rand() % sizeof(firstNames)/sizeof(*firstNames)]);
}
// 获取随机性别
char getRandomGender(){
return rand()%2?'M':'F';
}
// 获取随机年龄
int getRandomAge(){
return rand()%20+10; // 年龄范围设定为10至30岁之间
}
```
上述代码定义了一个`Student`结构体用来保存单个学生的信息,并通过三个辅助函数分别负责生成随机的名字、性别以及年龄段的数据[^1]。此外,在主函数中利用循环语句批量生产了一百名虚拟学员并打印其详情。
随机十个数,分别使用选择排序、希尔排序、快速排序、归并排序和基数排序使数据集有序,写出完整c语言代码
好的,下面是完整的C语言代码,包括生成随机数和各种排序算法的实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX 10
void generateRandomArray(int arr[], int size);
void printArray(int arr[], int size);
void selectionSort(int arr[], int size);
void shellSort(int arr[], int size);
void quickSort(int arr[], int left, int right);
void mergeSort(int arr[], int left, int right);
void merge(int arr[], int left, int mid, int right);
void radixSort(int arr[], int size);
int main() {
int arr[MAX];
generateRandomArray(arr, MAX);
printf("Original array:\n");
printArray(arr, MAX);
selectionSort(arr, MAX);
printf("\nAfter selection sort:\n");
printArray(arr, MAX);
generateRandomArray(arr, MAX);
shellSort(arr, MAX);
printf("\nAfter shell sort:\n");
printArray(arr, MAX);
generateRandomArray(arr, MAX);
quickSort(arr, 0, MAX - 1);
printf("\nAfter quick sort:\n");
printArray(arr, MAX);
generateRandomArray(arr, MAX);
mergeSort(arr, 0, MAX - 1);
printf("\nAfter merge sort:\n");
printArray(arr, MAX);
generateRandomArray(arr, MAX);
radixSort(arr, MAX);
printf("\nAfter radix sort:\n");
printArray(arr, MAX);
return 0;
}
void generateRandomArray(int arr[], int size) {
int i;
srand(time(NULL));
for (i = 0; i < size; i++) {
arr[i] = rand() % 100;
}
}
void printArray(int arr[], int size) {
int i;
for (i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
}
void selectionSort(int arr[], int size) {
int i, j, temp;
for (i = 0; i < size - 1; i++) {
int minIndex = i;
for (j = i + 1; j < size; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
void shellSort(int arr[], int size) {
int i, j, gap, temp;
for (gap = size / 2; gap > 0; gap /= 2) {
for (i = gap; i < size; i++) {
temp = arr[i];
for (j = i; j >= gap && arr[j - gap] > temp; j -= gap) {
arr[j] = arr[j - gap];
}
arr[j] = temp;
}
}
}
void quickSort(int arr[], int left, int right) {
int i, j, pivot, temp;
if (left < right) {
pivot = arr[left];
i = left + 1;
j = right;
while (i <= j) {
while (i <= j && arr[i] <= pivot) {
i++;
}
while (i <= j && arr[j] > pivot) {
j--;
}
if (i < j) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
temp = arr[left];
arr[left] = arr[j];
arr[j] = temp;
quickSort(arr, left, j - 1);
quickSort(arr, j + 1, right);
}
}
void mergeSort(int arr[], int left, int right) {
if (left < right) {
int mid = (left + right) / 2;
mergeSort(arr, left, mid);
mergeSort(arr, mid + 1, right);
merge(arr, left, mid, right);
}
}
void merge(int arr[], int left, int mid, int right) {
int temp[MAX];
int i = left, j = mid + 1, k = 0;
while (i <= mid && j <= right) {
if (arr[i] < arr[j]) {
temp[k++] = arr[i++];
} else {
temp[k++] = arr[j++];
}
}
while (i <= mid) {
temp[k++] = arr[i++];
}
while (j <= right) {
temp[k++] = arr[j++];
}
for (i = left, k = 0; i <= right; i++, k++) {
arr[i] = temp[k];
}
}
void radixSort(int arr[], int size) {
int i, j, k, m, n, p, q, radix = 10, count = 0, bucket[radix], max = arr[0];
for (i = 1; i < size; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
while (max > 0) {
count++;
max /= radix;
}
int temp[size];
for (i = 0, m = 1; i < count; i++, m *= radix) {
for (j = 0; j < radix; j++) {
bucket[j] = 0;
}
for (j = 0; j < size; j++) {
n = (arr[j] / m) % radix;
bucket[n]++;
}
for (j = 1; j < radix; j++) {
bucket[j] += bucket[j - 1];
}
for (j = size - 1; j >= 0; j--) {
n = (arr[j] / m) % radix;
temp[bucket[n] - 1] = arr[j];
bucket[n]--;
}
for (j = 0; j < size; j++) {
arr[j] = temp[j];
}
}
}
```
注意,为了方便展示,我将所有排序算法都放在了同一个文件中。实际使用时,应该将它们分别放在不同的文件中,并在需要使用时进行调用。另外,由于C语言中并没有内置的数组排序函数,所以这些排序算法都是手写的。
阅读全文