生成[0, n)的k个不重复随机数

2020-05-30  本文已影响0人  LEO_青蛙

【编程珠玑】生成[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)

上一篇 下一篇

猜你喜欢

热点阅读