java随机生成不重复的数字(超简单)
之前的在做需求 时候需要随机成数字,但不能重复, 在网上看了一些文章 都很繁琐,索性就自己搞了一些,下面是代码:
参数是 :最小数,最大数,生成数量
// 我的评价是虽然性能慢点 但是确实能用 代码也少。
public static HashSet<Integer> randomSet(int min, int max, int n) {
if ( n<=0 )return null;
HashSet<Integer> set = new HashSet<Integer>();
while (set.size() < n){
// 调用Math.random()方法
int num = (int) (Math.random() * (max+1 - min)) + min;
set.add(num);// 将不同的数存入HashSet中
}
return set;
}
这个代码量相对较少了,就用while循环 判断 HashSet集合的长度,同时利用HashSet的 唯一性,来判断重复。
下面是调用结果:
//参数依次是 最小数 最大数 生成数量
HashSet<Integer> integers = LiveMi.randomSet(1, 7, 4);
for (Integer integer : integers) {
System.out.println(integer);
}
测了好几次,虽然性能不指定怎么样,但却是还没发现问题,有问题还请大家指出。