数组随机取值不重复问题java中取[a,b]内的随机值公式
数组随机取值不重复问题定义一个int型数组,长度为6,每个元素值在1-30,随机取值,但是不能重复。
//定义一个数组
int[] arr = new int[6];
//向数组中赋值
for(int i = 0;i< 6;i++){
//欲赋的值
arr[i] = (int)(Math.random() * 30) + 1;
//遍历数组中是否有与欲赋值相等的元素
for(int j = 0;j < i;j++){
if(arr[i] == arr[j]){
//当查询到数组中有元素与欲赋值相等时,i--,跳出循环,并重新给arr[i]赋值
i--;
break;
}
}
}
//输出
for(int i = 0;i < 6;i++){
System.out.print(arr[i] + " ");
}
下图用[1,6]的值来测试,如果没问题,那么[1,30]也ok。
int num = (int)(Math.random() * (b - a + 1)) + a;
Math.radom() 取值 [0,1) (int)(Math.random() * (b - a + 1))向下取整,值为[0,(b-a+1))
例如取2-5的随机值 int num = (Math.random() * 4) + 2 , (Math.random() * 3)=[0,4),
(int)(Math.random() * 3)=[0,3]



