任务描述
本关任务:统计数组中随机数出现的次数。
相关知识
在 Java 中有一个 Random 类,他可以在指定的取值范围内随机产生数字。
Random 类
要想使用 Random 类,第一步需要导入 java.util.Random 这个包。 import java.util.Random;
第二步需要创建 Random 对象。 Random random = new Random();
创建完 Random 对象之后,我们就可以使用它提供的方法来创建随机数了。
方法名 | 方法说明 |
---|---|
nextDouble() 方法 | 返回 0.0 至 1.0 之间的 double 类型值 |
nextFloat() 方法 | 返回的是 0.0 至 1.0 之间的 float 类型值 |
nextInt(int n)方法 | 返回的是 0(包括)至 n(不包括)之间的 int 值 |
代码示例:
public class RandomTest {
public static void main(String[] args) {
Random random = new Random();
System.out.println(random.nextInt(10));
System.out.println(random.nextFloat());
System.out.println(random.nextDouble());
}
}
第一次运行结果:
4
0.60541
0.7046691676099207
第二次运行结果:
3
0.055246472
0.47445795351116005
我们可以看到第一次运行结果和第二次运行的结果是不一样的。当我们想要第一次和第二次运行结果一致的话,可以在创建 Random 对象的时候传入一个 Long 类型的数字,这个数字叫随机种子。具有相同随机种子的 Random 对象生成的随机数是一样的。
示例:
public static void main(String[] args) {
// 创建一个Random对象并传入随机种子
Random random = new Random(10);
System.out.println(random.nextInt(10));
System.out.println(random.nextFloat());
System.out.println(random.nextDouble());
}
第一次运行结果:
3
0.44563425
0.2578027905957804
第二次运行结果:
3
0.44563425
0.2578027905957804
编程要求
仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 间编写程序代码,统计数组中每个随机数出现的次数,具体要求如下:
- 接收给定的数据(如:4 88,其中第一个数代表数组长度,第二个数代表随机数种子);
- 创建数组并添加随机数(随机数介于 0-19 之间);
- 输出随机数出现的次数(出现次数大于 0 才输出);
- 按随机数大小排序输出。
注意:数字分隔符为空格。
测试说明
平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。
可在右侧 “测试结果”区查看具体的测试集详情。 例: 测试输入:
20 9
预期输出:
4出现了:1 次
6出现了:3 次
8出现了:2 次
9出现了:1 次
11出现了:1 次
13出现了:3 次
15出现了:2 次
16出现了:2 次
17出现了:1 次
18出现了:2 次
19出现了:2 次
import java.util.Random; import java.util.Scanner; public class RandomTest { public static void main(String[] args) { // 请在Begin-End间编写代码 /********** Begin **********/ // 接收给定数据 Scanner scanner = new Scanner(System.in); int z = scanner.nextInt(); // 数组长度 long l = scanner.nextLong(); // 随机数种子 // 创建Random对象,并设置随机种子 Random random = new Random(l); // 定义数组添加数据 int a[] = new int[z]; for (int i = 0; i < a.length; ++i) { a[i] = random.nextInt(20); } // 统计每个数出现的次数 int b[] = new int[z]; for (int i = 0; i < b.length; ++i) { b[i] = 0; } for (int i = 0; i < a.length; ++i) { b[a[i]]++; } // 输出结果 for (int i = 0; i < z; ++i) { if(b[i]>0) { System.out.println(i + "出现了:" + b[i] + " 次"); } } /********** End **********/ } }