随机生成x(50)个数字,每个数字范围是n~m[10~50],统计每个数字出现的次数以及某个数字出现的次数最多,以及最多个数。将每个数字和其出现次数打印出来,如果某个数出现0次,

3 篇文章 0 订阅
2 篇文章 0 订阅

方式一:使用数组实现

/*
     * 随机生成x(50)个数字,每个数字范围是n~m[10~50],统计每个数字出现的次数以及某个数字出现的次数最多,以及最多个数。将每个数字
     * 和其出现次数打印出来,如果某个数出现0次,则不打印。打印时按照数字升序
     */

public static void randomTest(int x,int n,int m){
        int[] account = new int[m-n+1];//记录出现的m~n之间的不重复数字
        int[] account1 = new int[x];//记录存储50个数字的数组
        Random random = new Random();
        
        for(int i=0;i<x;i++){//x代表随机生成多少个数字,所需要循环多少次
            int number = random.nextInt(m-n+1)+n;//random.nextInt(50-10+1)+10 每个数字范围是[10,50]
            System.out.println();
            account1[i] = number;//将随机生成的x个数放入数组
            System.out.println(number+"是数组account1的下标是"+i+"的值");
            account[number-n]++;//number代表随机生成的数字,account数组下标表示number生成的次数   
        }
        
        //统计每个数字出现的次数
        System.out.println(account.length);
        for(int i=0;i<account.length;i++){
            if(0 == account[i]){//表示某个数字出现了0次
                continue;//跳出本次循环进行下次循环
            }
            int arr_number= n+i;//表示50个随机数字,i+n 表示其中的一个(i+10) ,i表示出现的次数
            System.out.println(arr_number+"出现了"+account[i]+"次!");
            
            
        }
        //统计出现的次数最多数字,以及最多个数  ;取account数组值记录的是某个数出现的次数,所以去account数组最大值
        int max = account[0];
        for(int i=0;i<account.length;i++){
            if(max<account[i]){
                max = account[i];
            }
        }
        System.out.println("50个数字里出现的最大次数是"+max);
        
        //统计出现最大次数的数字值
        for(int i=0;i<account.length;i++){
            
            if(max== account[i]){
                System.out.println("50个数字里出现最大次数"+max+"次的数字是"+(i+n));
            }            
        }
        
    }  

 

main方法调用:

randomTest(50,10,50);

方式二:借助HashMap特性实现

    //生成50个 [10,50]之间的随机数字方式一
    public static int[] getRandomNum(){
        int[] a = new int[50] ;
        Random random = new Random();
        for(int i=0;i<50;i++){
            //random.nextInt(n) 返回0到n之间的随机数字
            System.out.println(random.nextInt(41)+10);
            a[i] = random.nextInt(41)+10;
        }
        
        return a;
    }

       /*
        * 方式二,将随机生成的50个[10,50]之间数字存放到map中,因为map中key值不能重复,所以用key值记录[10,50]数字值,    用  value值记录数字出现的个数
        */
               int[] aa = getRandomNum();
        HashMap hashMap = new HashMap();
        for(int i=0;i<aa.length;i++){
            if(hashMap.get(aa[i]) == null){//map的key值不存在
                hashMap.put(aa[i], new Integer(1));
            }else{
                Integer in = (Integer)hashMap.get(aa[1]);
                hashMap.put(aa[i], in.intValue()+1);
            }
        }
        System.out.println("统计每个数字出现的次数");
        Set set = hashMap.entrySet();
        Iterator iter = set.iterator();
        int a =0;//次数
        int b = 0;//数字
        while(iter.hasNext()){
            Map.Entry entry = (Map.Entry)iter.next();
            Integer key = (Integer)entry.getKey();
            Integer value = (Integer)entry.getValue();
            System.out.println("数字"+key+"出现了"+value+"次");
            
            //统计出现的次数最多数字,以及最多个数  
            Integer in = (Integer)entry.getValue();//value存储的次数
            if(a <= in.intValue()){
                a = in.intValue();
            }
        }
        System.out.println("50个数字里出现最多次数是"+a);
        Set set1 = hashMap.entrySet();
        Iterator iter1 = set1.iterator();
        while(iter1.hasNext()){
            Map.Entry entry = (Map.Entry)iter1.next();
            Integer key = (Integer)entry.getKey();
            Integer value = (Integer)entry.getValue();
            if(a == value.intValue()){
                System.out.println("统计出现最大次数的数字值:"+key);
            }
        }

方式三:利用TreeMap的特性

/**
     * TreeMap 随机生成50个数
     */
    public static void main(String[] args) {
        
        int[] a = RandomTest.getRandomNum();
        Map map = new TreeMap();
        //Collections的max方法 返回出现次数的集合collection
        for(int i=0;i<a.length;i++){
            if(map.get(a[i]) == null){//如果map不存在随机数,则存入value
                map.put(a[i], new Integer(1));
            }else{如果map存在随机数,则value值自增
                Integer in = (Integer)map.get(a[i]);
                map.put(a[i], new Integer(in.intValue()+1));
            }
        }
        System.out.println(map);
        System.out.println("遍历map里面的数据获取出现次数最多的数字");
        Collection colls = map.values();//先将map中的value值存入collection集合中,方便调用max方法返回最大值
        Integer maxInt = (Integer)Collections.max(colls);//根据元素的自然顺序,返回给定 collection 的最大元素
        List list =new ArrayList();//用来存放最大次数的key值
        Set set = map.entrySet();
        for(Iterator iter = set.iterator();iter.hasNext();){
            Map.Entry entry = (Map.Entry)iter.next();
            Integer value = (Integer)entry.getValue();
            if(maxInt.intValue() == value.intValue() ){
                list.add((Integer)entry.getKey());
            }
        }
        System.out.println("出现的最多次数是:"+maxInt);
        for(Iterator iters = list.iterator();iters.hasNext();){
            System.out.println("出现次数最多的数字是:"+iters.next());
        }  
    }

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这是一个使用 Java 生成 1000 随机统计出现次数的示例代码: ``` import java.util.Random; public class Main { public static void main(String[] args) { // 创建一个随机生成器 Random random = new Random(); // 创建一个数组来记录随机数字出现次数 int[] counts = new int[101]; // 因为要生成 -50~50数字,所以组大小要设为 101 // 生成 1000 随机 for (int i = 0; i < 1000; i++) { int num = random.nextInt(101) - 50; // 生成 -50~50 的整 counts[num + 50]++; // 在对应的组位置加 1 } // 输出统计结果 for (int i = 0; i < counts.length; i++) { System.out.println(i - 50 + ": " + counts[i]); } } } ``` 运行结果类似于: ``` -50: 11 -49: 6 -48: 8 -47: 8 ... 50: 8 ``` 其中每一行的格式为“数字: 出现次数”。 ### 回答2: 使用Java随机生成1000范围在-5050的整,然后统计每个随机数字出现次数可以按照以下步骤进行: 1. 创建一个大小为101的整组counts,用于存储每个数字出现次数组大小为101是因为整范围在-5050之间共101个数字。 2. 使用循环生成1000个随机整,并将每个随机减去-50,得到在组中对应的索引。例如,随机为-45,则对应的索引是-45 - (-50) = 5。 3. 使用该索引更新组counts中对应的数字出现次数。例如,对于索引5,将counts[5]的值加1。 4. 循环结束后,遍历counts组,将每个数字及其出现次数打印出来。 下面是使用Java代码实现上述过程: ```java import java.util.Random; public class RandomNumberGenerator { public static void main(String[] args) { int[] counts = new int[101]; // 101个数字,初始出现次数均为0 Random random = new Random(); for (int i = 0; i < 1000; i++) { int randomNumber = random.nextInt(101) + (-50); // 生成-5050范围的随机整 int index = randomNumber - (-50); // 获取对应在组中的索引 counts[index]++; // 更新数字出现次数 } for (int i = 0; i < counts.length; i++) { if (counts[i] != 0) { int number = i - 50; // 获取对应的随机 System.out.println("随机数字 " + number + " 出现了 " + counts[i] + " "); } } } } ``` 运行上述代码可以得到每个随机数字出现次数统计结果。 ### 回答3: 使用Java可以使用Random类来生成随机,并使用组或集合来统计每个随机出现次数。 下面是一个使用组来统计的示例代码: ```java import java.util.Random; public class RandomNumberStatistics { public static void main(String[] args) { int[] countArray = new int[101]; // 统计组,下标表示随机值,值表示出现次数 Random random = new Random(); for (int i = 0; i < 1000; i++) { int randomNumber = random.nextInt(101) - 50; // 生成-5050之间的随机整 countArray[randomNumber + 50]++; // 将-5050映射到组下标0至100,并增加对应位置的计值 } for (int i = 0; i < 101; i++) { int count = countArray[i]; if (count > 0) { System.out.println("数字 " + (i - 50) + " 出现次数:" + count); } } } } ``` 该代码中,首先创建了一个长度为101的组countArray,用来统计每个随机出现次数。然后使用Random类生成1000个范围在-5050之间的随机整,将随机映射到countArray组的下标中,并将对应位置上的计值加一。最后,遍历countArray组,输出每个随机值及其出现次数。 运行该代码,将会输出类似如下的结果: ``` 数字 -50 出现次数:12 数字 -49 出现次数:7 数字 -48 出现次数10 ... 数字 48 出现次数:4 数字 49 出现次数:7 数字 50 出现次数:9 ``` 每个随机数字出现次数都被统计打印出来了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值