Java 我应该生成随机数,但是如果你运行它,我会得到更多的重复,这是自然的还是我搞砸了?

Java 我应该生成随机数,但是如果你运行它,我会得到更多的重复,这是自然的还是我搞砸了?,java,random,numbers,Java,Random,Numbers,我应该生成一个包含1000个数字的数组,然后对其进行气泡排序。我得到的输出有很多重复的数字,有点太多了,我觉得我把事情搞砸了。我还在学习,所以对我放轻松:) 公共静态void main(字符串[]args){ Random rd=new Random(); int[]arr=新int[1000]; 对于(int i=0;i

我应该生成一个包含1000个数字的数组,然后对其进行气泡排序。我得到的输出有很多重复的数字,有点太多了,我觉得我把事情搞砸了。我还在学习,所以对我放轻松:)

公共静态void main(字符串[]args){

Random rd=new Random();
int[]arr=新int[1000];
对于(int i=0;iarr[j]){
温度=arr[j-1];
arr[j-1]=arr[j];
arr[j]=温度;
}                    
}
}
系统输出打印项数(arr[i]);

您的主要问题是,在尝试对数组进行排序时,您仍在初始化数组。以下方法似乎满足了您的期望

我使用Random类编写了一个快速的小解决方案,我发现它稍微干净了一点,因为它已经有了一个.nextInt,您可以使用一个max值来种子,您可以直观地使它更干净一点

    static void myRandom() {
        Random rand = new Random();
        int[] arr = new int[1000];

        for(int i = 0; i < arr.length; i++){
            arr[i] = rand.nextInt(1000) + 1;
            System.out.println(arr[i]);
        }
    }
static void myRandom(){
Random rand=新的Random();
int[]arr=新int[1000];
对于(int i=0;i
您没有使用
rd
,为什么要实例化它?除此之外,您得到太多重复数字是什么意思?您是否计算过任何概率,表明您看到的不太可能假设您是随机的?为什么要初始化随机对象(rd)但是不使用它?Random类比Math好。Random()。请参阅本文:生成1000个介于1和1000之间的随机数,几乎可以保证会有一些重复。如果不需要重复,请生成一个包含1000个数字的排序数组,然后将其洗牌。您应该期望得到重复值,请参阅。事实上,至少有一个重复值的概率在0.99左右在[1,1000]范围内对100个值进行采样的时间。非常感谢大家。您可能不想使用短语“带最大值的种子”来讨论参数化范围。种子在PRNG上下文中具有非常特殊的含义。
    static void myRandom() {
        Random rand = new Random();
        int[] arr = new int[1000];

        for(int i = 0; i < arr.length; i++){
            arr[i] = rand.nextInt(1000) + 1;
            System.out.println(arr[i]);
        }
    }