随机数
- Java数组之一维数值数组之随机数统计
- Random 类
- 例题:统计数组中每个随机数出现的次数
Java数组之一维数值数组之随机数统计
在 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
例题:统计数组中每个随机数出现的次数
具体要求如下:
1.接收给定的数据(如:4 88,其中第一个数代表数组长度,第二个数代表随机数种子);
2.创建数组并添加随机数(随机数介于 0-19 之间);
3.输出随机数出现的次数(出现次数大于 0 才输出);
4. 按随机数大小排序输出。
注意:数字分隔符为空格。
例:
测试输入:
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 input = new Scanner(System.in);
int n = input.nextInt();
int l = input.nextInt();
// 创建Random对象,并设置随机种子
Random random = new Random(l);
// 定义数组添加数据
int a[] = new int [n];
for(int i=0;i<n;i++){
a[i]=random.nextInt(20);
}
// 统计每个数出现的次数
int b[]= new int [n];
for(int i=0;i<n;i++){
b[a[i]]++;
}
// 输出结果
for(int i=0;i<20;i++){
if(b[i]>0)
System.out.printf("%d出现了:%d 次\n",i,b[i]);
}
/********** End **********/
}
}