在java中随机生成整数数组的问题

Eng*_*uad 0 java arrays random int

我试图生成一个N个整数值在0到100000之间的数组.

这是代码:

import java.util.*;
public class Main
{

    public static Scanner input = new Scanner(System.in);

    public static void main(String[] args)
    {
        int N;
        System.out.println();
        System.out.print("Enter an integer number: ");
        N = input.nextInt();
        int[] a = new int[N];
        Random generator = new Random();
        for(int i = 0; i < a.length; i++)
        {
            a[i] = generator.nextInt(100001);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我注意到,每次我生成新数组时,数组中的大多数整数都是5位数,有时有4位数,很少有3位数,但我从未发现2位数或更少的数字.

我的实施错了吗?

Jon*_*eet 12

考虑每种类型的数量:

  • 1个6位数字
  • 90000个5位数字
  • 9000个4位数字
  • 900个3位数字
  • 90个2位数字
  • 10个1位数字(包括0)

因此,大约90%的数字应该是5位数字,只有大约1%的数字应该是3位数或更少.它们会发生,但很少发生.


Mic*_*rdt 6

似乎错误的是你认为这在任何方面都是奇怪的.

在0到100000之间的数字中,只有1有6位数,大约90%有5位数,9%有4位数,0.9%有3位数,只有0.09%有1或2位数.因此,如果给出一个统一的分布(nextInt()实现),那么你根本看不到它们或者根本没有看到它们并不奇怪.如果你想要一个不同的发行版,你必须自己实现它.