知识点: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 值 |
若Random random = new Random();括号中没给种子数,那么每次生产的随机数都是不一样的,见下面两组代码输出:
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
要想两次输出相同,就要加入一个种子数
编程要求
仔细阅读右侧编辑区内给出的代码框架及注释,在 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 sc = new Scanner(System.in);
int n = sc.nextInt(); //数组长度
int r = sc.nextInt(); //随机种子数,当你想产生相同随机数是就要给Random random = Random(赋个值);
// 创建Random对象,并设置随机种子
Random random = new Random(r);
// 定义数组添加数据
int arr1[] = new int [n];
// 统计每个数出现的次数
for(int i = 0; i < arr1.length; i++){
arr1[i] = random.nextInt(19);
}
int arr2[] = new int [n];
//没赋值时,arr2[]中每一项都是0,这点就给后面第28行带来方便
for(int i = 0; i < arr1.length; i++){
arr2[arr1[i]]++; //桶排列的思想巧妙计算arr1[i]中每个数出现的次数
}
// 输出结果
for(int i = 0; i<arr1.length; i++){
if(arr2[i]>0){ //这里的i就对应于arr1[i]的值
System.out.println(i+"出现了:"+arr2[i]+" 次");
}
}
/********** End **********/
}
}