首页 > 代码库 > 随机数字统计

随机数字统计

要求:

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

版本一:(使用数组实现)

import java.util.Random;public class HomeWork{	public static void main(String[] args)	{		int[] count = new int[50];//统计每个数字出现的次数		for(int i=0; i<50; i++)		{			int number = new Random().nextInt(41) + 10;//生成[10,50]之间的随机数			count[number-10]++;	//充分利用数组下标提供的信息,利用下标信息得到具体的数字,而数组里面的值代表具体的数字出现的次数,这样,一个数组就搞定了两方面的需求。例如,count[0],count[1]分别代表10和11出现的次数,依次类推...								}				for(int i=0; i<count.length; i++)		{			if(count[i] != 0)			{				System.out.println((i+10)+"出现的次数是:"+count[i]);			}		}				int max = count[0];		for(int i=0; i<count.length; i++)//找到那个最大的次数		{			if(count[i] > max)			{				max = count[i];			}		}				for(int i=0; i<count.length; i++)		{			if(count[i] == max)			{				System.out.println("出现次数最多的数字是:"+(i+10)+",次数是:"+count[i]);			}		}		}}/*在Eclipse中的输出结果是:	12出现的次数是:1	13出现的次数是:3	14出现的次数是:3	15出现的次数是:1	16出现的次数是:3	17出现的次数是:1	20出现的次数是:1	22出现的次数是:4	23出现的次数是:3	24出现的次数是:4	27出现的次数是:1	28出现的次数是:1	29出现的次数是:2	30出现的次数是:2	31出现的次数是:2	32出现的次数是:1	33出现的次数是:1	34出现的次数是:1	37出现的次数是:3	43出现的次数是:2	46出现的次数是:2	48出现的次数是:3	49出现的次数是:1	50出现的次数是:4	出现次数最多的数字是:22,次数是:4	出现次数最多的数字是:24,次数是:4	出现次数最多的数字是:50,次数是:4*/

版本二:(使用集合实现)

import java.util.ArrayList;import java.util.Collection;import java.util.Collections;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Random;import java.util.Set;import java.util.TreeMap;public class HomeWorkStd{	public static void main(String[] args)	{		Map map = new TreeMap();//存储数字及其出现的次数(key为数字,value数字为出现的次数)尝试HashMap map		Random random = new Random();			for(int i=0; i<50; i++)		{			int number = random.nextInt(41) + 10;			Integer in = new Integer(number);			if(map.get(in) == null)			{				map.put(in, new Integer(1));			}			else			{				int value = http://www.mamicode.com/((Integer)map.get(in)).intValue();":" + value);		}				System.out.println("出现最多次数为" + maxOccurs);				System.out.println("这些数字分别是:");		for(Iterator iter=list.iterator(); iter.hasNext();)		{			System.out.println(iter.next());		}				/*另一种方式 		//找到最大的次数(自己实现)		Collection coll = map.values();		int max = 0;//假设最大的次数为零		for(Iterator iter = coll.iterator(); iter.hasNext();)		{			Integer value = http://www.mamicode.com/(Integer)iter.next();"出现次数最多的数有:" + key + ",次数为:" + max);			}		}		*/	}}

版本三:(简化版,使用集合,利用泛型、自动装箱/拆箱技术)

import java.util.Collection;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 StatisticRandomNumber{	public static void main(String[] args)	{		TreeMap<Integer, Integer> map = new TreeMap<Integer, Integer>();				Random random = new Random();		int temp;		for(int i=0; i<50; i++)		{			temp = random.nextInt(41) + 10;			if(map.get(temp) == null)				map.put(temp, 1);			else 				map.put(temp, map.get(temp) + 1);		}				Set<Map.Entry<Integer, Integer>> mapSet = map.entrySet();		for(Iterator<Map.Entry<Integer, Integer>> iter=mapSet.iterator(); iter.hasNext();)		{			Map.Entry<Integer, Integer> entry = iter.next();			System.out.println("Key:" + entry.getKey() + ", Value:" + entry.getValue());		}				Collection<Integer> col = map.values();		int maxValue = http://www.mamicode.com/Collections.max(col);"出现最多次数为:" + maxValue);		System.out.println("这些数字有:");		for(Iterator<Map.Entry<Integer, Integer>> iter=mapSet.iterator(); iter.hasNext();)		{			Map.Entry<Integer, Integer> entry = iter.next();			if(entry.getValue() == maxValue)			{				System.out.println(entry.getKey());			}		}	}}

 

随机数字统计