java实现的统计随机数次数

本文介绍了如何使用Java编程实现统计[10, 50]范围内50个随机数的出现次数,找出出现次数最多的数字及其数量,并按升序打印各数字及其出现次数。方法是利用数组进行统计。" 114033733,10548078,Java面向对象编程:源文件结构与程序入口,"['Java编程', '面向对象', '程序结构', '包管理', 'JVM']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:

随机生成50个数字(整数),每个数字的范围是[10, 50],统计每个数字出现的次数以及出现次数最多的数字与它的个数,最后将每个数字及其出现次数打印出来,如果某个数字出现次数为0,则不要打印它。打印时按照数字的升序排列。

1.用数组实现

import java.util.Random;

public class RandomTest1
{
	public static void main(String[] args)
	{

		int a ;
		int[] count = new int[41];
		/*
		 * 第一种方式生成随机数
		 */
		/*Random r = new Random();
		for (int i = 0; i < 50; i++)
		{
			a = r.nextInt(41) + 10;// a每次存储随机生成的数,范围是【10,50】
			count[a - 10]++;// 对刚随机生成的数,累计次数。由于数组下标的开始限定,故减去 10
		}*/
		
		/*
		 * 第二种方式生成随机数
		 */
		for(int i = 0; i < 50; i++)
		{
			a = (int)(Math.random()*41) + 10;
			count[a - 10]++;
		}
		
		for (int i = 0; i < 41; i++)//按数字自然顺序输出每个数字及次数。
		{
			if (0 == count[i])
			{
				continue;
			}
			System.out.println((i + 10) +" appeared  " + count[i] + " times");
		}
		int max = count[0];
		for (int i = 0; i < 41; i++)
		{
			if (max < count[i])
			{
				max = count[i];
			}
		}
		System.out.println("The most times of those numbers are "+ max );
		System.out.println("The number appeared  most times as follows:");
		for (int i = 0; i < 41; i++)
		{
			if (max == count[i])
			{
				System.out.println(10 + i );
			}

		}
	}

}
2.用集合实现

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import java.util.TreeMap;

public class RandomTest2
{
	public static void main(String[] args)
	{
		Random r = new Random();
		TreeMap map = new TreeMap();//key存放的是数字,value存放的是数字出现的次数
		for(int i = 0; i < 50; i++)
		{
			int number = r.nextInt(41) + 10;//随机生成数字,范围在【10, 50】之间。
			Integer key = new Integer(number);
			if(map.get(key) == null)//如果数字第一次生成,key就赋值为该数字,value赋值为1
			{
				map.put(key, new Integer(1));
			}
			else//否则,数字多次出现,key仍赋值为该数字,但是value应在原有的次数上增加一次。
			{
				int value = ((Integer) (map.get(key))).intValue();
				map.put(key, new Integer(value + 1));
			}
		}
		
		int max = Collections.max(map.values());//统计出现次数最多的数字次数
		
	    ArrayList list = new ArrayList();//存放出现次数最多的数字
	    
		/*
		 * 遍历TreeMap的第一种方式。entrySet方法保存了键值对构成的set集合
		 */
		Set set = map.entrySet();
		for(Iterator it = set.iterator();it.hasNext();)//统计每个数字出现的次数
		{
			
			Map.Entry  entry =(Map.Entry) it.next();
			int key = ((Integer) entry.getKey()).intValue();	
			int value = ((Integer)entry.getValue()).intValue();
			if(value == max)
			{
				list.add(key);
			}
			System.out.println(key + " appeared " +value + " times");
		}
		
		/*
		 * 遍历TreeMap的第二种方式。keySet方法保存了键构成的set集合。Values方法保存了值构成的collection集合(可重复)。get(key)方法就是通过键可以获取值。
		 */
		/*Set set = map.keySet();
		for(Iterator it = set.iterator(); it.hasNext(); )
		{
			int key = ((Integer)it.next()).intValue();
			int value = ((Integer) map.get(key)).intValue();
			System.out.println(key + " : " + value);
		}*/
		
		System.out.println("The most times of those numbers are "+ max );
		System.out.println("The number appeared  most times as follows:");	
		for(Iterator it = list.iterator(); it.hasNext();)//统计出现次数最多的数字
		{
			System.out.println(it.next());
		}
		
	}

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值