来自随机生成数字的Java直方图

时间:2018-11-20 22:46:24

标签: java histogram

我正在玩耍并学习一些Java语言,所以我真的是个新手。 e ...我的问题是-我正在生成1到5之间的5个随机数。计算在这些随机数中生成1号,2号,3号,4号和5号的次数。

public static void main(String[] args) {
    Random rand = new Random();
    int[] array = new int[5];
    int randomNumber;
    int i;
    int p1 = 0;
    int p2 = 0;
    int p3 = 0;
    int p4 = 0;
    int p5 = 0;
    System.out.println("Random numbers:");
    for (i = 0; i < 5; i++) {
        randomNumber = rand.nextInt(5) + 1;
        System.out.print(randomNumber);
        if (i < 4) {
            System.out.print(", ");
        }

        if (randomNumber == 1) {
            array[0] = p1++;
        } else if (randomNumber == 2) {
            array[1] = p2++;
        } else if (randomNumber == 3) {
            array[2] = p3++;
        } else if (randomNumber == 4) {
            array[3] = p4++;
        } else if (randomNumber == 5) {
            array[4] = p5++;
        }
    }
    //výpis četnosti
    System.out.println();
    System.out.println();
    System.out.println("Histogram: "); 

    for (i = 0; i < array.length; i++) {
        System.out.println("Number " + (i + 1) + ": " + array[i] + ".");
    }
}

该程序对我的理解有些奇怪。输出始终显示随机生成的包中包含的数字的真实计数正好减去1,我真的不明白为什么。 ...因此,如果从随机数生成器生成3的次数为3,则我的程序显示的3的数字仅为“ 2”。

我真的很感激能帮助我。谢谢。

2 个答案:

答案 0 :(得分:0)

array[0] = p1++;

与:

array[0] = p1;
p1 = p1 + 1;

我希望这足以让您发现问题。

答案 1 :(得分:0)

您要在后增加计数变量。因此,您第一次计数时分配给int数组存储区的内容是0。

相反,您可以通过如下方式简化此过程:仅增加数组中的整数:

public static void main(String[] args) {
    Random rand = new Random();
    int[] array = new int[5];
    int randomNumber;
    int i;

    System.out.println("Random numbers:");
    for (i = 0; i < 5; i++) {
        randomNumber = rand.nextInt(5) + 1;
        System.out.print(randomNumber);
        if (i < 4) {
            System.out.print(", ");
        }

        array[randomNumber - 1]++;
    }
    //výpis četnosti
    System.out.println("\n\nHistogram: "); 

    for (i = 0; i < array.length; i++) {
        System.out.println("Number " + (i + 1) + ": " + array[i] + ".");
    }
}

运行此命令会得到以下输出:

Random numbers:
2, 3, 5, 3, 2

Histogram: 
Number 1: 0.
Number 2: 2.
Number 3: 2.
Number 4: 0.
Number 5: 1.