public class test {
public static void main(String[] args) {
getRandomNum1();
getRandomNum2();
getRandomNum3();
getRandomNum4();
getRandomNum5();
}
/**
* 对数组里面的数字进行循环判断,如果有不做处理,继续循环。没有就添加。
*/
private static void getRandomNum1() {
int [] arr = new int[5];
int count = 0;
while(count < 5) {
int num = (int) (Math.random() * (10)) ;
boolean flag = true;
for (int j = 0; j < 5; j++) {
if(num == arr[j]){
flag = false;
break;
}
}
if(flag){
arr[count] = num;
count++;
}
}
System.out.println("随机数1:"+Arrays.toString(arr));
}
/**
* 判断是否存在。不在就添加,在就不处理。继续循环
*/
private static void getRandomNum2() {
List list = new ArrayList();
while(list.size() < 5) {
int num = (int) (Math.random() * (10)) ;
if(!list.contains(num)) {
list.add(num);
}
}
System.out.println("随机数2:"+Arrays.toString(list.toArray()));
}
/**
* 利用set特性.自动去重
*/
private static void getRandomNum3() {
Set set = new TreeSet<>();
while(set.size() < 5) {
int num = (int) (Math.random() * (10)) ;
set.add(num);
}
System.out.println("随机数3:"+Arrays.toString(set.toArray()));
}
/**
* 利用map特性做空判断
*/
private static void getRandomNum4() {
Map map = new HashMap<>();
while(map.size() < 5) {
int num = (int) (Math.random() * (10)) ;
if(map.get(num) == null ) {
map.put(num,num);
}
}
System.out.println("随机数4:"+map.values());
}
/**
* 批量生成随机数,取随机的5个
*/
private static void getRandomNum5() {
int[] arrs = new int[20];
for (int i = 0; i < arrs.length; i++) {
arrs[i] = i ;
}
int[] arr = new int[5];
boolean[] flag = new boolean[arrs.length];
Random random=new Random();
int j = 0;
for (int i = 0; i < arr.length; i++) {
do {
j = random.nextInt(flag.length);
} while (flag[j]); //标记,如果取出来过就继续do while 只有不符合while才会继续
flag[j] = true;
arr[i]=arrs[j];
}
System.out.println("随机数5:"+Arrays.toString(arr));
}
}