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++程序设计有所帮助。