1、比如说我们获取1-10之间的5个不相同的随机数,调用如下:getRandomNum(1,10,5);
/**
*
* @param requMin 最小值
* @param requMax 最大值
* @param targetLength 获取随机数个数
* @return
*/
public List<Integer> getRandomNum(int requMin, int requMax, int targetLength) {
if(requMax-requMin < 1){
System.out.print("最小值和最大值数据有误");
return null;
}else if(requMax-requMin <targetLength){
System.out.print("指定随机个数超过范围");
return null;
}
int target = targetLength;
List<Integer> list = new ArrayList<>();
List<Integer> requList = new ArrayList<>();
for (int i = requMin; i <= requMax; i++) {
requList.add(i);
}
for (int i = 0; i < targetLength; i++) {
// 取出一个随机角标
int r = (int) (Math.random() * requList.size());
list.add(requList.get(r));
// 移除已经取过的值
requList.remove(r);
}
return list;
}
2、获取指定集合(数组自行转换就可)指定随机数
/**
*
* @param requList 指定集合
* @param targetLength 获取随机数个数
* @return
*/
public List<Integer> getRandomNum(List<Integer> requList, int targetLength) {
if(requList.size() < 1){
System.out.print("requList数据有误");
return null;
}else if(requList.size() <targetLength){
System.out.print("指定随机个数超过范围");
return null;
}
List<Integer> list = new ArrayList<>();
for (int i = 0; i < targetLength; i++) {
// 取出一个随机角标
int r = (int) (Math.random() * requList.size());
list.add(requList.get(r));
// 移除已经取过的值
requList.remove(r);
}
return list;
}