统计随机生成随机数的个数

随机生成100个30-40的随机数,然后统计每个数字的个数。


public static void main(String[] args) {
        ArrayList list = new ArrayList();
        Random re = new Random();
        HashMap<Integer,Integer> hm = new HashMap();

        for (int i = 0; i < 100; i++) {
            int num = re.nextInt(11)+30;

            list.add(num);
            if (hm.containsKey(num)){
                hm.put(num,hm.get(num)+1);
            }else {
                hm.put(num,1);
            }
        }
        System.out.println("随机的数字为:\n"+list);
        hm.forEach((key,value)-> System.out.println(key+" :"+value+" 个"));
    }

很简单啊,弄一个长度为11的数组,全部初始化为0,然后a[rand.nextInt(11)]++,循环100次


 public static void main(String[] args) {
        // 随机生成100个30-40的随机数,然后统计每个数字的个数
        Map<Integer,Integer> map = new HashMap<>(10);
        for (int i = 0,index = 100;i < index;i++) {
            int v = (int) (30 + Math.random() * 10);
            switch (v) {
                case 30:
                    map.put(30,map.get(30) == null ? 0 : map.get(30) + 1);
                    break;
                case 31:
                    map.put(31,map.get(31) == null ? 0 : map.get(31) + 1);
                    break;
                case 32:
                    map.put(32,map.get(32) == null ? 0 : map.get(32) + 1);
                    break;
                case 33:
                    map.put(33,map.get(33) == null ? 0 : map.get(33) + 1);
                    break;
                case 34:
                    map.put(34,map.get(34) == null ? 0 : map.get(34) + 1);
                    break;
                case 35:
                    map.put(35,map.get(35) == null ? 0 : map.get(35) + 1);
                    break;
                case 36:
                    map.put(36,map.get(36) == null ? 0 : map.get(36) + 1);
                    break;
                case 37:
                    map.put(37,map.get(37) == null ? 0 : map.get(37) + 1);
                    break;
                case 38:
                    map.put(38,map.get(38) == null ? 0 : map.get(38) + 1);
                    break;
                case 39:
                    map.put(39,map.get(39) == null ? 0 : map.get(39) + 1);
                    break;
                case 40:
                    map.put(40,map.get(40) == null ? 0 : map.get(40) + 1);
                    break;

                default:
            }
        }


        System.out.println(map);

结果
{32=5, 33=8, 34=7, 35=7, 36=7, 37=11, 38=11, 39=16, 30=9, 31=9}


ThreadLocalRandom.current().ints(30, 40).limit(100).boxed().collect(Collectors.groupingBy(Integer::new, Collectors.counting()));

Map<Integer, Long> map = new Random().ints(30, 40).limit(100).boxed()
                .collect(Collectors.groupingBy(v -> v, Collectors.counting()));
        System.out.println(map);