非原创,仅记录
package com.academicdog.norepeatrandom;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
/**
* 生成随机不重复数组,用户指定随机数组个数以及范围
*
* 使用arraylist
*/
public class useArraylist {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Random rd = new Random();
System.out.println("输入不重复随机数组个数:");
int num = sc.nextInt();
int maxN, minN;
while (true) {
System.out.println("输入随机数组范围minN和maxN:");
maxN = sc.nextInt();
minN = sc.nextInt();
//范围不能比数组个数小,因为数字不重复,会造成后面arraylist的死循环
if(Math.abs(maxN - minN) >= num - 1) {
if (minN > maxN) {
minN = minN + maxN;
maxN = minN - maxN;
minN = minN - maxN;
break;
} else if (minN < maxN) {
break;
}
}else {
System.out.println("随机数范围不能小于" + num + ",否则会陷入死循环");
}
}
List rdArrList = new ArrayList();
int[] rdArr = new int[num];
int randomNum;
do{
randomNum = rd.nextInt(maxN - minN + 1) + minN;
if(!rdArrList.contains(randomNum)){
rdArrList.add(randomNum);
}
}while (rdArrList.size() < num);
System.out.println("生成的不重复数组是:");
for (int i = 0; i < rdArr.length; i++) {
rdArr[i] = (int)rdArrList.get(i);
System.out.print(rdArr[i] + " ");
}
}
}