`

一个产生随机数的试题

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


比较简单的代码如下(采用数组实现):

	public static void main(String[] args) {
		
		int[] count = new int[41];//此数组索引为0的位置存放的是数字10出现的个数,索引为1的位置存放的是数字11出现的个数(总共可能出现41种数,出现的数最多有41种可能,因此定义长度为41的数组)
		Random random = new Random();
		for(int i = 0; i < count.length; i++) {
			int number = random.nextInt(41) + 10;//随机数
			count[number - 10]++;//给count数组里面代表此数据出现的个数的值加一
		}
		
		for(int i = 0; i < count.length; i++) {
			if(0 == count[i]) {
				continue;
			}
			
			System.out.println((10 + i) + "出现次数:" + count[i]);
		}
		
		//下面先找出出现最多的次数
		int max = count[0];
		for(int i = 0; i < count.length; i++) {
			if(max < count[i]) {
				max = count[i];
			}
		}
		System.out.println("出现的最大次数为" + max + "次");

		//下面寻找出现最多次数的数有哪些
		for(int i = 0; i < count.length; i++) {
			if(count[i] == max) {
				System.out.println(i + 10);
			}
		}
	}


下面是老师写的采用集合实现的代码:
package com.test;

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 WorkTest2 {
	public static void main(String[] args) {
		Map map = new TreeMap();

		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 = ((Integer) map.get(in)).intValue();
				map.put(in, new Integer(value + 1));
			}

			Collection cols = map.values();
			Integer maxOccurs = (Integer) Collections.max(cols);

			Set set = map.entrySet();
			List list = new ArrayList();
			for (Iterator iter = set.iterator(); iter.hasNext();) {
				Map.Entry entry = (Map.Entry) iter.next();
				Integer key = (Integer) entry.getKey();
				Integer value = (Integer) entry.getValue();

				if (value.intValue() == maxOccurs) {
					list.add(key);
				}

				System.out.println(key + " : " + value);
			}

			// 接下来获取最大出现次数,比较好的方法是采用Collections
			System.out.println("出现最多的次数为:" + maxOccurs);

			System.out.println("这些数字分别是:");
			for (Iterator iter = list.iterator(); iter.hasNext();) {
				System.out.println(iter.next());
			}
		}
	}
}


下面是自己写的采用集合实现的代码(比老师写的稍微复杂一点):
package com.test;

import java.util.Comparator;
import java.util.Iterator;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import java.util.TreeMap;

public class WorkTest {
	public static void main(String[] args) {
		TreeMap map = new TreeMap(new MyComparator());

		for (int i = 0; i <= 40; i++) {
			map.put(i + 10, 0);
		}

		Random random = new Random();
		for (int i = 0; i < 50; i++) {
			int number = random.nextInt(41) + 10;
			map.put(number, ((Integer) map.get(number)) + 1);
		}

		Set set = map.entrySet();
		int maxNumber = 0;
		for (Iterator iter = set.iterator(); iter.hasNext();) {
			Map.Entry entry = (Map.Entry) iter.next();
			int key = ((Integer) entry.getKey()).intValue();
			int value = ((Integer) entry.getValue()).intValue();
			if (value != 0) {
				System.out.println(key + "出现的次数为:" + value);
			}
			if (value > maxNumber) {
				maxNumber = value;
			}
		}

		System.out.println("===========================");
		System.out.println("出现最多的次数为" + maxNumber);
		System.out.println("===========================");
		for (Iterator iter = set.iterator(); iter.hasNext();) {
			Map.Entry entry = (Map.Entry) iter.next();
			int key = ((Integer) entry.getKey()).intValue();
			int value = ((Integer) entry.getValue()).intValue();
			System.out.println("以下是出现次数最多的键:");
			if (value == maxNumber) {
				System.out.println(key);
			}
		}

	}

}

class MyComparator implements Comparator {
	public int compare(Object o1, Object o2) {
		int s1 = (Integer) o1;
		int s2 = (Integer) o2;

		return s1 - s2;
	}
}
分享到:
评论

相关推荐

    在一个时间点 生成多个随机数 生成N组长度固定的随机下标组合

    `Random`类允许我们创建一个随机数生成器实例,并通过调用其`Next()`方法来生成指定范围内的随机整数。例如,要生成1到100之间的随机数,我们可以这样做: ```csharp Random random = new Random(); int random...

    高中数学 322随机数的产生优秀学生寒假必做作业练习二 新人教A版必修3 试题.doc

    随机数的产生是高中数学中的一个重要概念,它广泛应用于统计学、概率论、数据分析等领域。随机数的产生可以通过计算机生成随机数的方式来实现,这种方式可以生成指定范围内的随机数。通过本文,我们将讨论随机数的...

    高中数学 332均匀随机数的产生优秀学生寒假必做作业练习二 新人教A版必修3 试题.doc

    5. **随机数的生成**:计算器可以生成不同范围的随机数,如题目中提到的(0,1)之间的随机数,以及指定范围内的随机数,这是计算机科学与数学结合的一个应用。 6. **概率计算**:在1升水中取0.1升进行化验,含有...

    小学生四则运算试题产生系统(asp.net)

    综上所述,"小学生四则运算试题产生系统(asp.net)"是一个集成了C#编程、ASP.NET Web开发、随机数生成算法、数据库管理和用户体验设计等多个IT技术领域的项目,旨在提供一个便捷的工具,以满足个性化教育的需求。

    Labview期末考试题及答案汇编.pdf

    * 使用 LabVIEW 创建一个 VI 程序,能够产生 9 个随机数组成的一維数组。 * 使用 LabVIEW 的数组操作功能,实现数组的排序和最大值、最小值的计算。 知识点 16: 枚举控件应用 * 使用 LabVIEW 创建一个 VI 程序,...

    现代密码学总结试题123

    2. C 选择另一个大随机数 x,并计算 A 如下:A=gx mod n。 3. C 将 A 发给 D。 4. D 选择另一个大随机数 y,并计算 B 如下:B= gy mod n。 5. D 将 B 发给 C。 6. 计算秘密密钥 K1 如下:K1=Bx mod n。 7. 计算秘密...

    在线考试系统(随机抽取试题)

    总的来说,一个在线考试系统(随机抽取试题)结合Asp.NET的成员和角色管理,不仅实现了考试的公平性,也提高了系统的安全性和可扩展性。这对于教育机构来说,是一种高效且可靠的考试解决方案。通过深入研究和实践,...

    数据库中要产生随机整数的方法

    如果需要一次性生成多行随机数,可以将上述SQL语句嵌入到一个SELECT语句中,配合其他表或使用WITH语句生成虚拟表。 8. **随机选择特定数量的记录**: 结合ORDER BY RAND()或ORDER BY RANDOM()(根据数据库类型)...

    (完整word)python二级考试试题9.doc

    在试题99中,正确答案是C高内聚低耦合,表明软件设计中划分模块的一个准则是高内聚低耦合。 耦合性和内聚性 耦合性和内聚性是对模块独立性度量的两个标准。在试题100中,正确答案是A降低耦合性提高内聚性有利于...

    .NET课程设计:学生试题库

    标题中的".NET课程设计:学生试题库"是一个项目主题,暗示了我们将探讨如何使用.NET框架进行课程设计,尤其是构建一个能够随机生成试题并提供结果分析的学生试题库系统。这个项目可能涉及C#、ASP.NET或其他.NET相关...

    XML和ASP编写一个随机产生模式和题目的试卷

    这个项目展示了XML和ASP的结合使用,XML提供数据结构,ASP负责处理和展示数据,共同实现了一个动态的、随机化的在线测试系统。通过这样的练习,开发者可以深入理解XML的数据存储优势以及ASP的动态网页处理能力,同时...

    jQuery随机选择音乐试题代码.zip

    2. **随机选择**:在JavaScript中,我们可以使用`Math.random()`函数生成一个0到1之间的随机数,通过适当的计算可以将这个随机数转换为所需的范围,以此实现随机选取题目或答案的功能。 3. **事件处理**:jQuery...

    C# ,net随机产生题目考试系统

    开发者创建了一个包含试题、选项、答案等表的数据库结构,并使用ADO.NET(.NET Framework的一部分)进行数据交互,实现试题的存储和检索。 5. **用户界面与Visual Studio 2005** Microsoft Visual Studio 2005是一...

    计算机一级考试试题汇总珍贵资料.doc

    Rand 函数是 Excel 中的一个函数,可以生成随机数。 10. 计算机 IP 地址 202.116.54.33 是 C 类地址。IP 地址是一种网络地址,可以用来标识网络中的设备。 11. 对分类汇总、数据库记录函数和一般记录函数的说法,...

    2011.3全国计算机二级C语言笔试试题.pdf

    环执行8次,每次循环打印出一个随机数B)for循环执行不超过5次,每次循环打印出两个随机数C)for循环执行不超过8次,每次循环打印出一个或两个随机数D)for循环执行次数不确定,但每个随机数可能打印多次 这段文字是...

    密码学试题C及答案

    - **解析:**在BBS算法中,随机数的生成通常涉及到模运算的结果,第i位随机数通常是前一个结果的最低位。 **15. 题目:**设散列函数H的输出为m比特,如果H的k个随机输入中至少有两个产生相同输出的概率大于0.5,则k...

    C语言+大学生C语言考试+编程试题与答案

    这个题目重点在于随机数的生成,与第一个题目相似,但没有寻找最大值。理解`rand()` 和 `srand()` 的使用是关键。 以上题目涵盖了C语言中的基本概念,如数组、循环、条件判断、函数调用以及简单的算法实现。这些...

    2018年上海市六一计算机竞赛scratch初赛试题与答案.doc

    - "克隆"不同于简单的"复制",克隆会产生一个新的独立角色实例。 10. 循环结构与程序设计基础 - 循环结构是程序设计的基本组成部分,包括for循环、while循环等,循环体是循环结构中重复执行的部分。 - 逻辑运算...

    西藏日喀则市南木林高级2017 2018学年高一数学下学期期中试题(无答案).doc

    第七题,选项D表示不能产生随机数,但实际上,正方体的六个面可以视为随机数的来源,因此D是错误的。 第八题,由于sin2α=2sinαcosα,结合题目条件和三角函数关系来解题,求出cosαsinα-sinαcosα的值。 第九...

    Labview期末考试题及答案.pdf

    - 利用随机数生成器创建一个6行4列的二维数组,然后使用数组切片或索引来提取前3行前3列作为新的数组。这涉及到数组的初始化、随机数生成和数组操作。 6. 生成带序号的随机数序列: - 生成5个随机数并结合序号,...

Global site tag (gtag.js) - Google Analytics