【编程珠玑】生成[0, n)的k个不重复随机数:
int[] num = new int[n];
int[] result = new int[k];
for(int i=0; i<n; ++i)
{
num[i] = i;
}
for(int i=0; i<k; ++i)
{
int index = rand(i, n);//包含i,不包含n
swap(num[i], num[index]);//交换数值
result[i] = num[i];//得到的结果
}
算法复杂度:O(n)
网友评论