
本文旨在帮助 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 过滤出数组中等于该数字的元素,并统计数量。
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 编程,并应用于实际项目中。


