随机指定范围内生成N个不重复的数
更多精彩
- 更多技术博客,请移步 asing1elife’s blog
具体实现
/**
* @param min 指定范围最小值
* @param max 指定范围最大值
* @param n 随机数个数
*/
private int[] randomCommon(int min, int max, int n){
// 有效性判断
if (n > (max - min + 1) || max < min) {
return null;
}
// 按随机个数声明存放数组
int[] result = new int[n];
// 统计生成个数
int count = 0;
// 生成个数小于n之前,一直生成
while(count < n) {
// 在指定范围内生成随机数
int num = (int) (Math.random() * (max - min)) + min;
// 重复标记
boolean flag = true;
// 将生成的随机数与数组中已生成的数作比较
for (int j = 0; j < n; j++) {
// 重复则标记
if(num == result[j]){
flag = false;
break;
}
}
// 不重复则加入数组
if(flag) {
result[count] = num;
// 生成个数累加
count++;
}
}
return result;
}