bitset应用---产生1万个不重复的随机数

#include<iostream>
#include<fstream>
#include<ctime>
#include<bitset>

using namespace std;

const unsigned int max_num=20000;
const unsigned int max_count=10000;
int main()
{
	unsigned int i=0;

	bitset<max_num+1> bit;

	//以下向磁盘文件写入数据
	ofstream out_ran;
	out_ran.open("F:\\gz\\random.txt",ios::out);//以输出方式打开文件,如果文件不存在,则新建文件
	                                             //如果已有此名字的文件,则将其原有内容全部清除
	if(out_ran.fail())
	{
		cout<<"打开文件失败!"<<endl;
		exit(1);
	}

	srand((unsigned)time(NULL));
	for(int j=0;j<max_count;)
	{
		i=rand()%max_num;

		if(bit[i]==0)//判断数i是否已写入
		{
			bit.set(i,1);
			out_ran<<i<<" ";//向磁盘文件写入max_count个[0,max_num)区间不重复的随机数
			j++;
		}
	}

	for(int j=0;j<max_num;j++)//输出排序后的随机数
	{
		if(bit[j]==1)
		{
			cout<<j<<" ";
		}
	}
	cout<<endl;

	out_ran.close();//关闭磁盘文件

	system("pause");
	return 0;
}

你可能感兴趣的:(C++,bitset)