随机不重复数字生成

Ques:0~n之间不重复随机数字

方法一

random_shuffle

//C++ 原生接口,思想是对0~n之前打乱顺序,即产生随机数字  
template 
  void random_shuffle (RandomAccessIterator first, RandomAccessIterator last,
                       RandomNumberGenerator& gen)
{
  iterator_traits::difference_type i, n;
  n = (last-first);
  for (i=n-1; i>0; --i) {
    swap (first[i],first[gen(i+1)]);
  }
}

方法二

//思想同样是对数组进行操作,结果保存在a中。将选中的数字用未被选中的数字换掉。
void gen_three_nums(vector& a,int boundary){
    int start_array[boundary];
    for(int i=0;i

你可能感兴趣的:(Program,Tricks)