void genknuth(int m, int n)
{
for (int i = 0; i < n; i++)
{
if (rand() % (n - i) < m)
{
cout << i << endl;
m--;
}
}
}
void gensets(int m, int n)
{
std::set<int> s;
while ((int)s.size() < m)
s.insert(rand() % n);
for (std::set<int>::iterator i = s.begin();
i != s.end();
++i)
cout << *i << endl;
}
void gensbuf(int m, int n)
{
int *x = new int[n];
for (int i = 0; i < n; i++)
x[i] = i;
for (int i = 0; i < m; i++)
{
uniform_int_distribution<unsigned> u(i, n-1);
static default_random_engine e(time(NULL));
int j = u(e);
int t = x[i];
x[i] = x[j];
x[j] = t;
}
std::sort(x, x+m);
for (int i = 0; i < m; i++)
cout << x[i] << endl;
}
int main()
{
// srand(time(NULL));
// genknuth(10, 100);
// gensets(10, 100);
gensbuf(10, 100);
getchar();
return 0;
}