日期:2014-05-20  浏览次数:20761 次

关于JAVA的小程序题
要求输出一个1到60之间随机的无重复的数,求解答。。。

------解决方案--------------------
Java有随机函数吧,我记得是有的,但是输出的范围就不记得了。
可以把输出的数存到一个数组里,然后每输出一次就比对,有就重新产生,没有就输出
------解决方案--------------------
Java code

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++;
        }
    }