参考:编程珠矶第12.1节
下面给出书中的代码(从前 n个书中生成m 个不重复的随机数)
#include <iostream>
#include <algorithm>
#include <set>
using namespace std;
int const RND_MAX=100;
int bigrand()
{
return RND_MAX*rand()+rand();
}
int randInt(int l,int u)
{
return l+bigrand()%(u-l+1);
}
void getshuf(int m,int n)
{
int i,j;
int *x=new int[n];
for(i=0;i<n;i++)
x[i]=i;
for(i=0;i<m;i++)
{
j=randInt(i,n-1);
int t=x[i];
x[i]=x[j];
x[j]=t;
}
sort(x,x+m);
for(i=0;i<m;i++)
cout<<x[i]<<"\n";
}
void gensets(int m,int n)
{
set<int> s;
while(s.size()<m)
s.insert(bigrand()%n);
set<int>::iterator i;
for(i=s.begin();i!=s.end();++i)
cout<<*i<<"\n";
}
int main()
{
//getshuf(5,10);
gensets(5,10);
return 0;
}