头歌-学习-Java数组之一维数值数组之随机数统计

知识点: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 才输出);
  • 按随机数大小排序输出。

注意:数字分隔符为空格。

例:
测试输入:

 
  1. 20 9

预期输出:

 
  1. 4出现了:1 次
  2. 6出现了:3 次
  3. 8出现了:2 次
  4. 9出现了:1 次
  5. 11出现了:1 次
  6. 13出现了:3 次
  7. 15出现了:2 次
  8. 16出现了:2 次
  9. 17出现了:1 次
  10. 18出现了:2 次
  11. 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 **********/
    }
}

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nefelibata_2023

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值