利用C++中的bitset来检查生成的随机数是否重复。这样可以将内存空间的消耗降低,并且在每次检查是否重复时不用搜索整个序列。
#include <iostream>
#include <ctime>
#include <bitset>
using namespace std;
#define MAX 101
int main(void)
{
bitset <MAX> flag;
srand((unsigned)time(NULL));
for (int i = 0; i < MAX; ++i)
{
int val = rand() % MAX;
if(!flag[val]) //not exist
{
printf("%3d ", val);
flag.set(val);
}
else i--;
}
printf("\n");
return 0;
}