برای اینکه اعداد تکراری هم نداشته باشیم میشه کلا اینجوری برنامه رو نوشت:
#include <iostream>
#include <ctime>
#include <random>
#include <vector>
#include <algorithm>
using namespace std;
auto createRandoms(int number,int mIn,int mAx)->vector<int>{
random_device rd;
mt19937_64 eng(time(0));
uniform_int_distribution<int> rnd(mIn,mAx);
vector<int> result(number);
generate(result.begin(),result.end(),[&](){
return rnd(eng);
});
return result;
}
auto createRandoms2(int number,int mIn,int mAx)->vector<int>{
vector<int> result;
{
vector<int> tmpVect(mAx-mIn+1,0);
iota(tmpVect.begin(),tmpVect.end(),mIn);
random_shuffle(tmpVect.begin(),tmpVect.end());
move(tmpVect.begin(),tmpVect.begin()+number,back_i nserter(result));
}
return result;
}
auto main()->int{
auto display = [](auto item){
for(auto& term:item){
cout<<term<<" ";
}
cout<<endl;
};
display(createRandoms(15,1,20));
display(createRandoms2(15,1,20));
return 0;
}
نتایج:
11 18 5 3 11 5 4 19 4 2 8 19 3 20 14
13 2 10 3 1 12 8 20 5 16 19 6 15 14 11