实现不重复出题关键代码

实现不重复出题关键代码.
以下是一个简单的 Java 代码示例,根据题型权重实现出题系统: ``` import java.util.ArrayList; import java.util.HashMap; import java.util.Random; public class ExamSystem { // 定义题型常量 private static final int SINGLE_CHOICE = 1; private static final int MULTI_CHOICE = 2; private static final int FILL_BLANK = 3; private static final int ESSAY_QUESTION = 4; // 定义题型对应的权重 private static final HashMap<Integer, Double> questionTypeWeight = new HashMap<Integer, Double>() {{ put(SINGLE_CHOICE, 0.3); put(MULTI_CHOICE, 0.4); put(FILL_BLANK, 0.2); put(ESSAY_QUESTION, 0.1); }}; // 定义题库 private static final ArrayList<String> singleChoiceQuestions = new ArrayList<String>() {{ add("单选题1"); add("单选题2"); add("单选题3"); add("单选题4"); add("单选题5"); }}; private static final ArrayList<String> multiChoiceQuestions = new ArrayList<String>() {{ add("多选题1"); add("多选题2"); add("多选题3"); add("多选题4"); add("多选题5"); }}; private static final ArrayList<String> fillBlankQuestions = new ArrayList<String>() {{ add("填空题1"); add("填空题2"); add("填空题3"); add("填空题4"); add("填空题5"); }}; private static final ArrayList<String> essayQuestions = new ArrayList<String>() {{ add("问答题1"); add("问答题2"); add("问答题3"); add("问答题4"); add("问答题5"); }}; public static void main(String[] args) { // 计算题型权重之和 double totalWeight = 0; for (double weight : questionTypeWeight.values()) { totalWeight += weight; } // 根据权重随机选题 Random random = new Random(); ArrayList<String> selectedQuestions = new ArrayList<String>(); for (int i = 0; i < 10; i++) { double randomValue = random.nextDouble() * totalWeight; double sumWeight = 0; for (int questionType : questionTypeWeight.keySet()) { sumWeight += questionTypeWeight.get(questionType); if (randomValue <= sumWeight) { String question = ""; switch (questionType) { case SINGLE_CHOICE: question = singleChoiceQuestions.get(random.nextInt(singleChoiceQuestions.size())); break; case MULTI_CHOICE: question = multiChoiceQuestions.get(random.nextInt(multiChoiceQuestions.size())); break; case FILL_BLANK: question = fillBlankQuestions.get(random.nextInt(fillBlankQuestions.size())); break; case ESSAY_QUESTION: question = essayQuestions.get(random.nextInt(essayQuestions.size())); break; } selectedQuestions.add(question); break; } } } // 输出选中的题目 System.out.println("选中的题目:"); for (String question : selectedQuestions) { System.out.println(question); } } } ``` 上述代码中,我们定义了题型常量和题型对应的权重,并将题目存储在对应的 ArrayList 中。然后,我们计算题型权重之和,并根据权重随机选题,最后输出选中的题目。你可以根据自己的需求修改题型常量和题目,以及相应的权重,以实现你自己的考试系统。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值