巧妙使用Random类产生不重复的随机数
利用标签数组进行定位
答题思路如下:
首先定义一个初始值都为false的标签数组;
巧妙利用do-while循环,第一次产生随机数以后会跳出循环,然后把对应位置的标签数组赋值为true,表示这个位置已被使用,下次产生的随机数如果和上一次相同,则会继续执行do-while循环,直到产生不同位置的随机序号。
import java.util.Random;
public class NoRepeatRandom {
public static void main(String[] args) {
Random random = new Random();
boolean[] flag = new boolean[5]; //定义一个标签数组(重点),初始值为false
int index;
for (int i = 0; i < 5; i++) {
do{
index = random.nextInt(5);
}while(flag[index]); //只用当index未被使用时(FALSE)才会跳出循环
flag[index] = true; //把随机产生的数字标签定义为TRUE
System.out.print(index + " "); //打印不重复的随机数
}
}
}