package com.y541028105;
import java.util.HashSet;
import java.util.Set;
public class RandomMySelf {
/**
* 随机指定范围内N个不重复的数
* 利用HashSet的特征,只能存放不同的值
* @param min 指定范围最小值
* @param max 指定范围最大值
* @param n 随机数个数
* @param HashSet<Integer> set 随机数结果集
*/
public void randomSet(int min, int max, int n, HashSet<Integer> set) {
if (n > (max - min + 1) || max < min) {
return;
}
for (int i = 0; i < n; i++) {
// 调用Math.random()方法
int num = (int) (Math.random() * (max - min)) + min;
set.add(num);// 将不同的数存入HashSet中
}
int setSize = set.size();
// 如果存入的数小于指定生成的个数,则调用递归再生成剩余个数的随机数,如此循环,直到达到指定大小
if (setSize < n) {
randomSet(min, max, n - setSize, set);// 递归
}
}
public static void main(String args[]){
RandomMySelf randomMySelf = new RandomMySelf();
HashSet<Integer> hashSet = new HashSet<Integer>();
randomMySelf.randomSet(1000,9999,1000,hashSet);
for (Integer integer:hashSet) {
System.out.println(integer);
}
}
}
这是代码 为什么 我选择了从1000到9999生成1000个随机数 但是实际上只生成了994个?
求大神解释。
Java