public class Random {
    private int RandomNumber ;
    public Random(){
        RandomNumber = (int )(Math.random()*1000000000);
    }
    public int getNum(){
        return RandomNumber ;
    }
}
public class Data {
    private int size ;
    private int [] data;
    private boolean have ;    public Data(int n) {
        size = 0;
        data = new int[n];
        while (size < n) {
            Random random = new Random();
            if (insert(random.getNum())) {
                size++;
            }
        }
    }    public boolean insert(int num) {
        have = false ;
        if (size == 0) {
            data[0] = num;
            size++;
        } else {
            for (int i = 0; i < size; i++) {
                if (num == data [i]) {
                    have = true ;
                    break;
                }
            }
        }
        if (!have )
            data[size ] = num;
            return !have ;
        }    public int [] getData() {
        return data ;
    }    public void Output() {
        for (int i = 0; i < data.length; i++)
            System. out.print(data [i] + " ");
    System. out.println();
    }
}
自己编写了这两个类,用于生成一个含有不重复的十亿以内的随机数的数组。现在问题是不知道为什么这些随机数的分布,较小的数很少,而较大的数却很多。另外,想知道如何用Java生成均匀分布的随机数Javarandom

解决方案 »

  1.   

    想要均匀的话就测试的次数多,越多越均匀
      

  2.   

    测试完了再做个统计 画个图 看看是否符合均匀分布
      

  3.   


    这是你直观上的感受,是不准确的。你可以自己定义下什么叫做较小的数,对于 1×10^10 的范围,小于 1×10^9 的数有多少个?
    可以去统计看看,如果在 1/10 左右就可以认为是均匀分布了。
    如果你打算看到些 2、3 位数,这概率低的跟中彩票差不多了。