//purpose: 生成随机的不重复的测试数据 //1000w数据量,要保证生成不重复的数据量,一般的程序没有做到。但,本程序做到了。 #include <time.h> #include <assert.h> #include <string.h> #include <stdlib.h> #include <stdio.h> #include <unistd.h> #define size 10000000 int num[size] = {0}; void swap(int* a, int* b)//第一种,也是最常用的一种 { int t; t=*a; *a=*b; *b=t; } int main() { int n; int i, j; FILE *fp = fopen("data.txt", "w"); assert(fp); for (n = 0; n < size; n++) //之前此处写成了n=0;n<size。导致下面有一段小程序的测试数据出现了0,特此订正。 num[n] = n+1; srand((unsigned)time(NULL)); printf("num init ok\n"); for (i = size - 1; i >= 1; --i) { swap(&num[i], &num[rand() % i]); } for (n = 0; n < size; n++) fprintf(fp, "%d ", num[n]); fclose(fp); return 0; }