`

Java的Random实例2-抽题

    博客分类:
  • Java
阅读更多

上篇写了用Random实现简单抽***奖,这回也用Random实现随机抽题。

 

思路:

1、将题库中符合条件的题目的题目序号查询出来放到一个list集合中。

2、根据list的size获取0-size之间的随机数,如此便可保证第三步中不会出现下标越界的情况。

3、从list中获取下标为随机数的题目序号。

 

可能存在的问题:判断随机数是否重复

 

以下为实现过程和代码:

public class TestRandom2 {
	public static void main(String[] args) {
		//生成100到题目进行简单测试
		List list = new ArrayList();
		for(int i=0;i<100;i++){
			list.add(i+1);//以(i+1)的值作为题目序号
		}
		
		String ids = getExamIDs(list,20);//从100道题目中抽20道
		System.out.println("随机抽取的题目序号为:"+ids);
		//output:随机抽取的题目序号为:51,13,64,11,78,61,66,67,81,21,16,86,24,25,69,12,72,28,1,37
	}
	
	/**
	 * 该方法用来获取抽取题目的序号
	 * @param list:指定的题目集合
	 * @param count:抽题数量
	 * @return String字符串,以逗号隔开
	 * **/
	public static String getExamIDs(List list,int count){
		StringBuffer ids = new StringBuffer();
		//1、校验不能为空
		if(list==null || list.size()<=0) return null;
		if(count<=0) return null;
		
		//2、进行抽题
		Random random = new Random();
		Set set = new HashSet();
		Integer randomNum = 0;
		for(int i=0;i<count;i++){
			//System.out.println("次数:"+i);
			randomNum = random.nextInt(list.size());
			while(isRepeat(randomNum.toString(),set)){//若重复就自动再次自动生成
				randomNum = random.nextInt(list.size());
			}
			set.add(randomNum);//不重复的值保存到set中
			//System.out.println("最后的随机数"+num);
			ids.append(","+list.get(randomNum).toString());
		}
		String id=null;
		if(ids.length()>1) id = ids.substring(1);//将第一个逗号去掉
		return id;
	}
	
	/**
	 * 该方法用来判断是否重复
	 * @param num:指定的是否重复的数据
	 * @param set:集合,num在该集合冲查找是否重复
	 * @return flag:true或者false,true-重复 false-不重复
	 * **/
	public static boolean isRepeat(String num,Set set){
		boolean flag = false;//true-表示重复 false-表示不重复
		if(num==null || num.trim().length()<=0) return true;
		//hashSet为空或者它没有结果集合,也就是说是第一次,那么一定不会重复
		if(set==null || !set.iterator().hasNext()) return false;
		
		String value="";
		for(Iterator it=set.iterator();it.hasNext();){
			value = it.next().toString();
			//System.out.println("set中的值:"+value+"\n传过来的随机数:"+num);
			//说明两者相同,那就是重复了
			if(num.equalsIgnoreCase(value)){
				flag=true;
				break;
			}
		}
		//System.out.println("结果值:"+flag);
		return flag;
	}
}

 

分享到:
评论

相关推荐

    Java中数组实例---冒泡排序.pdf

    import java.util.Random; public class BubbleSort { public static void main(String[] args) { int[] arr = new int[10]; Random ran = new Random(); for (int i = 0; i ; i++) { arr[i] = ran.nextInt...

    Java中数组实例---求数组元素的最大值.pdf

    //随机生成 10 个0-99之间的数值,放入数组Random ran = new Random();for(int i=0;i;i++){arr[i] = ran.nextInt(100);}//打印数组中的数据System.out.println("数组中的数据为:" + Arrays.toString(arr));#cold_...

    基于Java的实例源码-手机游戏大富翁源代码+注释.zip

    - **`Random`类**:游戏中的骰子投掷、卡片抽取等随机性元素需要用到`java.util.Random`类来生成随机数。 5. **文件操作** - **持久化数据**:游戏状态、玩家信息可能需要保存到文件中,这就涉及到了文件的读写...

    java7-new--random.rar_java7.0_random

    Java 7对`java.util.Random`类进行了一些改进,使得开发者能够更加灵活地生成不同类型和范围的随机数。 在Java 6及更早版本中,`Random`类提供了基本的随机数生成功能,如`nextInt()`、`nextDouble()`等。然而,...

    random-integer-number-guess.zip_random

    2. **随机数生成**:在Java中,生成随机数需要用到`java.util.Random`类。你可以通过创建`Random`类的实例,然后调用其`nextInt()`方法来得到一个指定范围内的随机整数。例如,要生成1到100之间的随机数,可以写成`...

    Java基础之Random随机数.docx

    Java基础之Random随机数 Java中的随机数使用率非常高,因此掌握随机数的使用是非常重要的。在Java中,Random类提供了产生随机数的方法,下面将详细介绍Random类的使用。 Random类的使用 Random类是Java中生成...

    (超赞)JAVA精华之--深入JAVA API

    - `java.util.Random` 用于生成伪随机数,可用于生成随机数或随机选择。 - **向量类 Vector** - `java.util.Vector` 是线程安全的动态数组,可以自动调整大小,适用于多线程环境。 - **栈类 Stack** - `java....

    java学习资料-实例解析常用Java随机数生成

    2. **Random类**: `java.util.Random`是一个可以生成各种类型随机数的类,包括整数、浮点数、长整数等。你可以通过调用其构造函数创建一个随机数生成器,例如: ```java Random random = new Random(); ``` ...

    完整java实例代码

    在这个实例中,Java的`Random`类用于生成一个随机整数,然后让用户尝试猜测这个数字。通过循环结构和条件语句实现游戏逻辑,如比较用户的猜测与目标数字,并提供提示直到猜对为止。 2. **复数运算**:复数在数学中...

    Java 实例 - 集合打乱顺序源代码-详细教程.zip

    这个"Java实例 - 集合打乱顺序源代码-详细教程"很可能是提供了一系列示例和解释,帮助开发者学习如何在Java中随机地重新排序集合元素。以下是对这个主题的详细讲解: 首先,Java中最常用的集合类有ArrayList、...

    java题目例题-----

    9. 随机数生成:Point类实例的创建中使用了Math.random()函数来生成随机的(x,y)值,这是Java中随机数生成的一个常用方法。 10. 标准输入输出:文档中的程序使用了System.in来接收用户的输入,并使用System.out来...

    java小游戏代码实例-贪吃蛇 控制台代码.rar

    【标题】"java小游戏代码实例-贪吃蛇 控制台代码.rar" 提供的是一个使用Java编程语言实现的控制台版本的贪吃蛇游戏。在Java编程领域,控制台游戏通常涉及字符绘制和用户输入处理,是学习基础编程概念、循环、条件...

    基于Java的彩票购买抽奖程序-源码.zip

    2. **GUI设计**:可能涉及到Java Swing或JavaFX进行图形用户界面的设计,使得用户能够交互式地进行彩票购买。这些库提供了丰富的组件,如按钮、文本框、标签等,用于创建直观易用的界面。 3. **数据存储**:彩票...

    java技术开发实例

    在Java技术开发中,实例是将抽象的概念转化为具体代码的过程,是编程实践中不可或缺的一部分。这里我们有两个具体的实例:登录窗口和颜色变化。这两个实例分别涵盖了Java GUI编程和颜色处理的基本概念。 首先,让...

    choujiangxitong.rar_JAVA 抽奖_抽奖_抽奖 JAVA_抽奖 线程_抽奖系统

    4. **随机数生成**:抽奖的核心是生成随机数,Java的`Random`类提供了生成随机数的功能。通过设定一定的规则,比如指定奖池中的号码范围,可以模拟真实的抽奖过程。 5. **线程同步**:在多线程环境下,为了防止数据...

    Java课程设计--24点卡牌游戏.zip

    随机数生成可以使用`java.util.Random`类来实现,数据结构则可以借助Java集合框架,如ArrayList或LinkedList,来存储和管理卡牌。 接下来是游戏逻辑的实现。这包括对卡牌进行排序、检查合法性(例如,确保每次运算...

    java 求最大的随机数

    首先,我们需要创建一个`Random`对象实例,如下所示: ```java Random random = new Random(); ``` 2. **生成整数随机数**: `nextInt()`方法用于生成指定范围内的随机整数。例如,如果你想生成一个介于1和100...

    Java抽奖系统

    1. **随机数生成器**:Java中的`java.util.Random`类是生成随机数的基础,用于模拟抽奖过程中的随机选择。可以设置种子值以确保可重复性,或者不设置种子以获取无规律的随机序列。 2. **数据存储**:抽奖系统通常...

    java做的抽奖小程序

    开发者可以通过实例化`Random`类,并调用其`nextInt()`方法来生成指定范围内的随机整数。例如,若要从1到100之间生成一个随机数,可以这样写: ```java Random rand = new Random(); int prizeIndex = rand.nextInt...

Global site tag (gtag.js) - Google Analytics