C++抽奖程序实现方法
本文实例讲述了C++抽奖程序实现方法。分享给大家供大家参考。具体实现方法如下:
一、intrand()可以生成从[0,65536)之间均匀分布的随机数。
现要求实现:有30万员工,使用rand()写一个抽奖程序,抽出人100获奖。
#include<iostream>
#include<set>
usingnamespacestd;
typedefset<int>ISET;
ISETGetPridePersonId(constintnum,constintpride_num)
{
intid;
ISETiset;
while(1){
id=(int)((double)rand()/RAND_MAX*num)%(num-1);
if(iset.find(id)==iset.end()){
iset.insert(id);
}
if(iset.size()>=pride_num){
break;
}
}
returniset;
}
voidprint(ISET&iset)
{
ISET::iteratoriter;
cout<<"itemas:\n";
for(iter=iset.begin();iter!=iset.end();++iter){
cout<<*iter<<"\n";
}
}
intmain(intargc,char**argv)
{
constinttotal_person=300000;
constinttotal_pride_person=100;
ISETiset=GetPridePersonId(total_person,total_pride_person);
print(iset);
return0;
}
二、主要容易出错的地方:
①当rand()范围要求扩大的时候,浮点与整形数之间的强制转换问题。
int randId=(int)((double)rand()/RAND_MAX*num);
②STL中set的使用是否非常熟练?
希望本文所述对大家的C++程序设计有所帮助。