C++实现抽奖程序的方法

作者:kgmucom   在线用户:65
风之恋奇迹私服技术网是一家提供最新互联网编程技术网站

大家在学习编程的时候是不是对于抽奖程序都会非常的好奇呢?那么我们要如何才能实现抽奖程序呢?现在我们就和爱站小编一起去看看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++实现抽奖程序的方法,遇到类似问题的朋友不妨借鉴学习下,如果还有疑问,请在本文底部留言吧。

提供最全面的奇迹sf开服版本和最新的奇迹私服开服技术信息,奇迹私服文库让每一位奇迹私服玩家找到自己需要的版本技术文章

上一篇:你知道C语言怎么实现求定积分吗

下一篇:C++中如何使用map

请发表您的评论