日期:2014-05-17  浏览次数:20601 次

随机产生题目,如何是好?
在做一个考试系统,题库中有50道判断题,100道单选题,50道多选题。考生每个人做的时候是10道判断题,30到单选题,10道多选题。要求是:每个考生随机抽题目,每个考生之间相同题目,选项最好不同,怎么样处理会方便些?

我的想法是:在服务器端,将3中题型,每种随机生成5套(包括题目和答案都保存在域对象之中),然后考生开始考试的时候,随机抽取3中题型的各一套,组合成一阵套试卷,再返回给考生。这样就避免了,每次针对不同的考生,都要随机产生问题,然后再从数据库中读取的时间。

大家都有啥好的想法呢?
服务器 数据库 对象 随机

------解决方案--------------------
可以啊,你也可以把试题加个编号的字段随机数去获取放到集合中返回。比如panduan0001到panduan0050是判断题,你就随机去取10个不重复的就行,然后多选也这样,duoxuan0001到duoxuan0050,随机选10个,单选,danxuan0001到danxuan0100选取30个,然后选项在打乱下顺序就是了
------解决方案--------------------
将题放入Set中,如果要有顺序,整个TreeSet放置应该没问题.
------解决方案--------------------
将题目放在一个list里面,然后打乱,取前多少个就行了
Collections里面有这个方法,打乱集合内元素顺序,叫什么忘了
------解决方案--------------------
int pages[] = new int[6];
List<Integer> list = new ArrayList<Integer>();
//将数组中的值放入list中
for(int i = 0;i<pages.length;i++){
list.add(i+1);
}
Random random = new Random();
int i = 0;
while(i<pages.length){
//返回1个在0和list.size()之间的一个值
int index = random.nextInt(list.size());
pages[i] = list.get(index);
list.remove(index);
i++;
}
for(int j : pages){
System.out.println(j);
}
这个可以将数组打乱获得一个乱的array。其他你懂的。。。
------解决方案--------------------
http://wenku.baidu.com/view/4b51f71aa300a6c30c229f45?fr=prin   可以参考下我个人总结的一个组卷算法 基于集合的