您的位置:首页 > 编程语言 > Java开发

JAVA获取不相同随机数

2018-01-03 16:33 375 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java random 随机数