如何计算随机数组中出现的次数?

s8vozzvw  于 2021-07-06  发布在  Java
关注(0)|答案(2)|浏览(393)

我有一些家庭作业。我必须写一个简单的程序,其中1000000随机1-100之间产生和存储在一个数组。之后程序必须打印出25、50和100的出现次数。我试了好几圈,但运气不好。到现在为止,我有这个:

package randomnumbers;

import java.util.Random;

public class random {
    public static void main(String[] args) {
        Random r = new Random();
        int number[] = new int[1000000];

        for (int count = 0; count < number.length; count++) {
            number[count] = 1 + r.nextInt(100);
        }
    }
}
px9o7tmv

px9o7tmv1#

public static void main(String[] args) {
    Random r = new Random();
    int low = 1;
    int high = 101;
    int number[] = new int[1000000];
    int count25 = 0;
    int count50 = 0;
    int count100 = 0;

    for (int i = 0; i < number.length; i++) {
        int num = r.nextInt(high - low) + low;
        if (num == 25) {
            count25++;
        } else if (num == 50) {
            count50++;
        } else if (num == 100) {
            count100++;
        }
        number[i] = num;
    }
    System.out.println(count25);
    System.out.println(count50);
    System.out.println(count100);
}

这里r.nextint(高-低)+低在下限(包含)和上限(排除)之间生成随机值。因此我使用了上界为101。
有3个不同的计数器,如果其值与所需值(25、50和100)匹配,则会递增1。循环完成后,可以打印计数器的值。

jdg4fx2g

jdg4fx2g2#

你可以用 IntStream.count() 方法。您的代码可能如下所示:

public static void main(String[] args) {
    // generate array of 1,000,000 elements
    int[] arr = IntStream.range(0, 1000000)
            // random value from 1 to 100
            .map(i -> (int) (1 + Math.random() * 100))
            .toArray();

    // test output
    System.out.println(countOf(arr, 0));   // 0
    System.out.println(countOf(arr, 1));   // 10137
    System.out.println(countOf(arr, 25));  // 10026
    System.out.println(countOf(arr, 50));  // 10103
    System.out.println(countOf(arr, 100)); // 10100
    System.out.println(countOf(null,100)); // 0
    System.out.println(countOf(arr, 101)); // 0
}
private static long countOf(int[] arr, int value) {
    if (arr == null)
        return 0;
    else
        return Arrays.stream(arr).filter(i -> i == value).count();
}

另请参见:
•如何有效地找到数组中的重复元素?
•如何获取非空数组的元素?

相关问题