对于如何构造“无重复”随机数或字符的算法,一个简单地思路就是给已经用过的字符或数字配备一个“开关”,如果没用过,开关是关的,用了之后,就把它打开,下一次构造生成的时候,遇到已经“打开”了的开关对应的数字或字符跳出重新生成。以下是一个例子:
向一个长度为5的整型数组中随机生成5个0~9的随机整数,并输出
要求生成的数字中没有重复数
public class Random_1 {
public static void main(String args[]){
Random random=new Random();
int[] arr=new int[5];
boolean[] index=new boolean[10]; //开关数组
for(int i=0;i<arr.length;i++){
arr[i]=random.nextInt(10);
while(true){
if(index[arr[i]]==false){ //开关数组元素是关着的(没用过),可以正常赋值,跳出循环输出,并将其改为true(已用过)
index[arr[i]]=true;
break;
}
if(index[arr[i]]==true){//开关数组元素是开着着的(用过),重新生成
arr[i]=random.nextInt(10);
}
}
System.out.print(arr[i]+" ");
}
}