当前位置:主页 > 软件编程 > C代码 >

C++抽奖程序实现方法

时间:2021-05-20 09:29:57 | 栏目:C代码 | 点击:

本文实例讲述了C++抽奖程序实现方法。分享给大家供大家参考。具体实现方法如下:

一、int rand()可以生成从[0, 65536)之间均匀分布的随机数。

现要求实现:有30万员工,使用rand()写一个抽奖程序,抽出人100获奖。

#include <iostream> 
#include <set> 
using namespace std; 
typedef set<int> ISET; 
ISET GetPridePersonId(const int num, const int pride_num) 
{   
  int id; 
  ISET iset;   
  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; 
     }      
   }    
   return iset; 
} 
void print(ISET &iset) 
{ 
  ISET::iterator iter; 
  cout<<"item as :\n"; 
  for (iter = iset.begin(); iter != iset.end(); ++ iter) { 
    cout<<*iter<<"\n"; 
  } 
} 
int main(int argc, char **argv)  
{ 
  const int total_person = 300000; 
  const int total_pride_person = 100; 
  ISET iset = GetPridePersonId(total_person, total_pride_person); 
  print(iset); 
  return 0; 
} 

二、主要容易出错的地方:

①当rand()范围要求扩大的时候,浮点与整形数之间的强制转换问题。

复制代码 代码如下:
int  randId = (int)((double)rand() / RAND_MAX * num);

②STL中set的使用是否非常熟练?

希望本文所述对大家的C++程序设计有所帮助。

您可能感兴趣的文章:

相关文章