首先, 下面的函数生成一个随机的大于a且小于b的正整数
int randint(int a, int b)
{
assert(a < b);
if(rand < 0)
rand = -rand;
return a + rand % (b - a);
}
通过打乱数组前m个数的次序生成m个不同的随机数
void genshuf(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"; }