首页 > 编程 > C++ > 正文

C++抽奖程序实现方法

2020-05-23 14:19:31
字体:
来源:转载
供稿:网友
这篇文章主要介绍了C++抽奖程序实现方法,实例分析了C++随机数的生成技巧与抽奖程序的实现方法,需要的朋友可以参考下
 

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

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

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

  1. #include <iostream>  
  2. #include <set>  
  3. using namespace std;  
  4. typedef set<int> ISET;  
  5. ISET GetPridePersonId(const int num, const int pride_num)  
  6. {    
  7.   int id;  
  8.   ISET iset;    
  9.   while (1) {  
  10.      id = (int)((double)rand() / RAND_MAX * num) % (num - 1);  
  11.      if (iset.find(id) == iset.end()) {  
  12.        iset.insert(id);  
  13.      }  
  14.      if (iset.size() >= pride_num) {  
  15.        break;  
  16.      }       
  17.    }     
  18.    return iset;  
  19. }  
  20. void print(ISET &iset)  
  21. {  
  22.   ISET::iterator iter;  
  23.   cout<<"item as :/n";  
  24.   for (iter = iset.begin(); iter != iset.end(); ++ iter) {  
  25.     cout<<*iter<<"/n";  
  26.   }  
  27. }  
  28. int main(int argc, char **argv)   
  29. {  
  30.   const int total_person = 300000;  
  31.   const int total_pride_person = 100;  
  32.   ISET iset = GetPridePersonId(total_person, total_pride_person);  
  33.   print(iset);  
  34.   return 0;  
  35. }  
?

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

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

 

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

 

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

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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表