日期:2014-05-20 浏览次数:20761 次
import java.util.HashSet; import java.util.Iterator; import java.util.Random; public class RandomGen { // 利用HashSet的特征,只能存放不同的值 public static HashSet<Integer> set = new HashSet<Integer>(); public int count;// 需要生成随机数的个数 public RandomGen(int num) { this.count = num; } public static RandomGen init(int num) { return new RandomGen(num); } // 生成【begin,end】区间内num个随机数 public void genRadoms(int begin, int end, int num, HashSet<Integer> set) { if (num > (end - begin + 1) || end < begin) { return; } for (int i = 0; i < num; i++) {// 生成num个随机数 // 调用Math.random()方法 int temp = (int) (Math.random() * (end - begin)) + begin; set.add(temp);// 将不同的数存入HashSet中 } int setLen = set.size(); // 如果存入的数小于指定生成的个数,则调用递归再生成剩余个数的随机数,如此循环,直到达到指定大小 if (setLen < count) { genRadoms(begin, end, count - setLen, set);// 递归 } } public static void printSet(HashSet<Integer> set) {// 打印结果 int count = 1; Iterator<Integer> i = set.iterator(); while (i.hasNext()) { System.out.print("["+count + "]:" + i.next()+" "); if(count%10==0){ System.out.println(); } count++; } }