首页 > Java > java教程 > 正文

Java 统计随机数出现次数及找出出现频率最高的数

聖光之護
发布: 2025-11-02 21:17:15
原创
162人浏览过

java 统计随机数出现次数及找出出现频率最高的数

本文旨在帮助 Java 初学者理解如何统计随机数生成过程中每个数字出现的次数,并找出出现频率最高的数字。我们将通过数组存储随机数,并利用 Java 8 的 Stream API 简化统计过程,最终提供一个清晰、易懂的解决方案。

在很多编程场景中,我们需要生成随机数并进行统计分析。例如,模拟硬翻转、抽奖活动等。本教程将引导你完成一个 Java 程序,该程序可以生成指定数量的 1 到 10 之间的随机数,并统计每个数字出现的次数,最终找出出现频率最高的数字。

1. 生成随机数数组

首先,我们需要生成一个包含指定数量随机数的数组。以下代码实现了这个功能:

立即学习Java免费学习笔记(深入)”;

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

public class RandomNumberCounter {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入要生成的随机数数量:");
        int amount = scanner.nextInt();

        int[] randomNumberArray = new int[amount];
        Random random = new Random();

        for (int i = 0; i < amount; i++) {
            randomNumberArray[i] = random.nextInt(10) + 1; // 生成 1 到 10 的随机数
            System.out.print(randomNumberArray[i] + " ");
        }
        System.out.println();

        // 后续统计代码将添加到此处
    }
}
登录后复制

这段代码首先获取用户输入的随机数数量,然后创建一个对应大小的整型数组 randomNumberArray。接着,使用 Random 类生成 1 到 10 之间的随机数,并将它们存储到数组中。

2. 统计每个数字出现的次数

接下来,我们需要统计数组中每个数字出现的次数。 Java 8 的 Stream API 提供了一种简洁高效的方式来实现这个功能。我们可以使用 Arrays.stream() 将数组转换为流,然后使用 filter() 方法过滤出特定数字,最后使用 count() 方法统计数量。

        // 统计每个数字出现的次数
        for (int i = 1; i <= 10; i++) {
            long count = Arrays.stream(randomNumberArray)
                    .filter(n -> n == i)
                    .count();
            System.out.println("数字 " + i + " 出现的次数: " + count);
        }
登录后复制

这段代码循环遍历 1 到 10,对于每个数字,使用 Stream API 过滤出数组中等于该数字的元素,并统计数量。

即构数智人
即构数智人

即构数智人是由即构科技推出的AI虚拟数字人视频创作平台,支持数字人形象定制、短视频创作、数字人直播等。

即构数智人 36
查看详情 即构数智人

3. 找出出现频率最高的数字

最后,我们需要找出出现频率最高的数字。 一种方法是创建一个数组来存储每个数字的出现次数,然后找到数组中的最大值及其对应的索引。

        // 找出出现频率最高的数字
        int[] counts = new int[11]; // 索引 1-10 对应数字 1-10 的出现次数
        for (int number : randomNumberArray) {
            counts[number]++;
        }

        int maxCount = 0;
        int mostFrequentNumber = 0;
        for (int i = 1; i <= 10; i++) {
            if (counts[i] > maxCount) {
                maxCount = counts[i];
                mostFrequentNumber = i;
            }
        }

        System.out.println("出现频率最高的数字是: " + mostFrequentNumber + ",出现了 " + maxCount + " 次");
登录后复制

这段代码首先创建一个长度为 11 的整型数组 counts,用于存储每个数字的出现次数(索引 0 不使用,索引 1-10 分别对应数字 1-10)。然后,遍历随机数数组 randomNumberArray,统计每个数字的出现次数。最后,遍历 counts 数组,找到出现次数最多的数字及其对应的次数。

完整代码示例:

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

public class RandomNumberCounter {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入要生成的随机数数量:");
        int amount = scanner.nextInt();

        int[] randomNumberArray = new int[amount];
        Random random = new Random();

        for (int i = 0; i < amount; i++) {
            randomNumberArray[i] = random.nextInt(10) + 1; // 生成 1 到 10 的随机数
            System.out.print(randomNumberArray[i] + " ");
        }
        System.out.println();

        // 统计每个数字出现的次数
        for (int i = 1; i <= 10; i++) {
            long count = Arrays.stream(randomNumberArray)
                    .filter(n -> n == i)
                    .count();
            System.out.println("数字 " + i + " 出现的次数: " + count);
        }

        // 找出出现频率最高的数字
        int[] counts = new int[11]; // 索引 1-10 对应数字 1-10 的出现次数
        for (int number : randomNumberArray) {
            counts[number]++;
        }

        int maxCount = 0;
        int mostFrequentNumber = 0;
        for (int i = 1; i <= 10; i++) {
            if (counts[i] > maxCount) {
                maxCount = counts[i];
                mostFrequentNumber = i;
            }
        }

        System.out.println("出现频率最高的数字是: " + mostFrequentNumber + ",出现了 " + maxCount + " 次");
    }
}
登录后复制

注意事项:

  • Random.nextInt(10) 生成的是 0 到 9 的随机数,所以需要加 1 才能得到 1 到 10 的随机数。
  • Stream API 的 filter() 方法接受一个 Predicate 函数式接口,用于过滤流中的元素。
  • 统计出现频率最高的数字的方法可以进行优化,例如使用 HashMap 存储每个数字的出现次数,可以提高查找效率。

总结:

本教程介绍了如何使用 Java 生成随机数数组,并统计每个数字出现的次数,最终找出出现频率最高的数字。 通过学习本教程,你将掌握以下知识点:

  • 生成指定范围内的随机数
  • 使用数组存储数据
  • 使用 Java 8 Stream API 简化统计过程
  • 找出数组中的最大值

希望本教程能够帮助你更好地理解 Java 编程,并应用于实际项目中。

以上就是Java 统计随机数出现次数及找出出现频率最高的数的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号