版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Gease_Gg/article/details/88076902
Ques:0~n之间不重复随机数字
方法一
random_shuffle:
//C++ 原生接口,思想是对0~n之前打乱顺序,即产生随机数字
template <class RandomAccessIterator, class RandomNumberGenerator>
void random_shuffle (RandomAccessIterator first, RandomAccessIterator last,
RandomNumberGenerator& gen)
{
iterator_traits<RandomAccessIterator>::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<int>& a,int boundary){
int start_array[boundary];
for(int i=0;i<boundary;i++) start_array[i]=i;
for(int i=0;i<3;i++){
int index=rand()%(boundary-i);
a.push_back(start_array[index]);
start_array[index]=start_array[boundary-i-1];
}
}