最近在做一些算法测试时,为了方便测试,自己写了一个获取多个随机数字的小Demo
public class GetArrays {
/**
* 获取随机数组
* @param arrLength 随机数组长度
* @return 随机数组,可重复
*/
public static int[] getArrays(int arrLength){
int arr[] = new int[arrLength];//随机数个数为数组长度
int max=arrLength,min=1;//随机数大小范围为1~数组长度
int ran;
for(int i = 0;i<arrLength;i++){
ran = (int) (Math.random()*(max-min)+min);
arr[i] = ran;
}
return arr;
}
/**
* 获取不重复的随机数组
* @param min 随机数范围最小值
* @param max 随机数范围最大值
* @param amount 随机数个数
* @return 传入的随机数个数长度的数组
* 因为随机数不可重复,所以最大值减去最小值不能小于随机数个数
*/
public static int[] getArraysNorepeat(int min,int max,int amount){
if((max - min) < amount){
throw new RuntimeException("参数异常:随机个数大于随机范围");
}
int arr[] = new int[amount];
int ran,i=0;
boolean repeat;//记录是否存在重复
while(i < arr.length){
repeat = false;
ran = (int) (Math.random()*(max-min)+min);
for (int j = 0; j < arr.length; j++) {
if( arr[j] == ran){
repeat = true;
break;
}
}
if(!repeat){
arr[i] = ran;
i++;
}
}
return arr;
}
}
写个测试类测试一下
public class Test {
public static void main(String[] args) {
int[] arr1 = GetArrays.getArrays(10);
int[] arr2 = GetArrays.getArraysNorepeat(1,100,20);
System.out.println("arr1:");
for (int i = 0; i < arr1.length; i++) {
System.out.print(arr1[i]+"\t");
}
System.out.println("\narr2:");
for (int i = 0; i < arr2.length; i++) {
System.out.print(arr2[i]+"\t");
}
}
}
运行结果如下图: