//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;
}
高效产生不重复的随机数
最新推荐文章于 2022-12-28 11:13:22 发布