上篇写了用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; } }
相关推荐
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...
//随机生成 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_...
- **`Random`类**:游戏中的骰子投掷、卡片抽取等随机性元素需要用到`java.util.Random`类来生成随机数。 5. **文件操作** - **持久化数据**:游戏状态、玩家信息可能需要保存到文件中,这就涉及到了文件的读写...
Java 7对`java.util.Random`类进行了一些改进,使得开发者能够更加灵活地生成不同类型和范围的随机数。 在Java 6及更早版本中,`Random`类提供了基本的随机数生成功能,如`nextInt()`、`nextDouble()`等。然而,...
2. **随机数生成**:在Java中,生成随机数需要用到`java.util.Random`类。你可以通过创建`Random`类的实例,然后调用其`nextInt()`方法来得到一个指定范围内的随机整数。例如,要生成1到100之间的随机数,可以写成`...
Java基础之Random随机数 Java中的随机数使用率非常高,因此掌握随机数的使用是非常重要的。在Java中,Random类提供了产生随机数的方法,下面将详细介绍Random类的使用。 Random类的使用 Random类是Java中生成...
- `java.util.Random` 用于生成伪随机数,可用于生成随机数或随机选择。 - **向量类 Vector** - `java.util.Vector` 是线程安全的动态数组,可以自动调整大小,适用于多线程环境。 - **栈类 Stack** - `java....
2. **Random类**: `java.util.Random`是一个可以生成各种类型随机数的类,包括整数、浮点数、长整数等。你可以通过调用其构造函数创建一个随机数生成器,例如: ```java Random random = new Random(); ``` ...
在这个实例中,Java的`Random`类用于生成一个随机整数,然后让用户尝试猜测这个数字。通过循环结构和条件语句实现游戏逻辑,如比较用户的猜测与目标数字,并提供提示直到猜对为止。 2. **复数运算**:复数在数学中...
这个"Java实例 - 集合打乱顺序源代码-详细教程"很可能是提供了一系列示例和解释,帮助开发者学习如何在Java中随机地重新排序集合元素。以下是对这个主题的详细讲解: 首先,Java中最常用的集合类有ArrayList、...
9. 随机数生成:Point类实例的创建中使用了Math.random()函数来生成随机的(x,y)值,这是Java中随机数生成的一个常用方法。 10. 标准输入输出:文档中的程序使用了System.in来接收用户的输入,并使用System.out来...
【标题】"java小游戏代码实例-贪吃蛇 控制台代码.rar" 提供的是一个使用Java编程语言实现的控制台版本的贪吃蛇游戏。在Java编程领域,控制台游戏通常涉及字符绘制和用户输入处理,是学习基础编程概念、循环、条件...
2. **GUI设计**:可能涉及到Java Swing或JavaFX进行图形用户界面的设计,使得用户能够交互式地进行彩票购买。这些库提供了丰富的组件,如按钮、文本框、标签等,用于创建直观易用的界面。 3. **数据存储**:彩票...
在Java技术开发中,实例是将抽象的概念转化为具体代码的过程,是编程实践中不可或缺的一部分。这里我们有两个具体的实例:登录窗口和颜色变化。这两个实例分别涵盖了Java GUI编程和颜色处理的基本概念。 首先,让...
4. **随机数生成**:抽奖的核心是生成随机数,Java的`Random`类提供了生成随机数的功能。通过设定一定的规则,比如指定奖池中的号码范围,可以模拟真实的抽奖过程。 5. **线程同步**:在多线程环境下,为了防止数据...
随机数生成可以使用`java.util.Random`类来实现,数据结构则可以借助Java集合框架,如ArrayList或LinkedList,来存储和管理卡牌。 接下来是游戏逻辑的实现。这包括对卡牌进行排序、检查合法性(例如,确保每次运算...
首先,我们需要创建一个`Random`对象实例,如下所示: ```java Random random = new Random(); ``` 2. **生成整数随机数**: `nextInt()`方法用于生成指定范围内的随机整数。例如,如果你想生成一个介于1和100...
1. **随机数生成器**:Java中的`java.util.Random`类是生成随机数的基础,用于模拟抽奖过程中的随机选择。可以设置种子值以确保可重复性,或者不设置种子以获取无规律的随机序列。 2. **数据存储**:抽奖系统通常...
开发者可以通过实例化`Random`类,并调用其`nextInt()`方法来生成指定范围内的随机整数。例如,若要从1到100之间生成一个随机数,可以这样写: ```java Random rand = new Random(); int prizeIndex = rand.nextInt...