import java.util.Random;
public class RadomUtil {
//随机洗牌算法,从备选数组中选择一个放入目标数组中,将选取的数组从备选数组移除(放至最后,并缩小选择区域)
//算法时间复杂度O(n)
public static int[] generateRandIntArray(int Len) {
int[] RandArray = new int[Len];
int CanBeUsed = Len;//默认数组中可以选择的部分长度
//初始化备选数组
int[] defaultNums = new int[Len];
for (int i = 0; i < defaultNums.length; i++) defaultNums[i] = i + 1;
Random random = new Random();
//填充目标数组
int temp =0;
for (int i = 0; i < RandArray.length; i++) {
int index = random.nextInt(CanBeUsed);
RandArray[i] = defaultNums[index];//将随机选取的数字存入目标数组
//将已用过的数字扔到备选数组最后
temp = defaultNums[index];
defaultNums[index] = defaultNums[CanBeUsed - 1];
defaultNums[CanBeUsed - 1] = temp;
CanBeUsed--;//减小可选区域
}
return RandArray;
}
}
生成连续不重复随机整数数组
最新推荐文章于 2022-10-16 18:01:33 发布