随机产生题目,如何是好?

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

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

大家都有啥好的想法呢?
...全文
240 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wey580231 2013-04-11
  • 打赏
  • 举报
回复
引用 6 楼 Byron2011 的回复:
http://wenku.baidu.com/view/4b51f71aa300a6c30c229f45?fr=prin 可以参考下我个人总结的一个组卷算法 基于集合的
嗯,谢谢啦。看过了以后,感觉想法又开始多了。加入要是让每题的选项也是改变的,这该怎么办呢?
wey580231 2013-04-11
  • 打赏
  • 举报
回复
引用 5 楼 qiang0322 的回复:
你是做考试系统,那么你把题目放在数据库中吧,然后按你的想法来吧。
题目是放在数据库之中的,但是如果根据每个学生点击考试,然后再生成随机题目编号,再从数据库中读取的话,我觉得这有点慢。我就是预先生成一定份数的试卷,将对应的题目保存在服务器端。考生点击考试之后,随机产生一个数值,然后从服务器之中取出对应的试卷就可以了。这样应该会比较快点。
  • 打赏
  • 举报
回复
我当时是用java做的 用的是Set集合 不知道其他语言中该用什么集合 你参考下吧 应该都有这种集合的
  • 打赏
  • 举报
回复
http://wenku.baidu.com/view/4b51f71aa300a6c30c229f45?fr=prin 可以参考下我个人总结的一个组卷算法 基于集合的
求知路漫漫 2013-04-11
  • 打赏
  • 举报
回复
你是做考试系统,那么你把题目放在数据库中吧,然后按你的想法来吧。
alvin_1989 2013-04-11
  • 打赏
  • 举报
回复
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。其他你懂的。。。
  • 打赏
  • 举报
回复
将题目放在一个list里面,然后打乱,取前多少个就行了 Collections里面有这个方法,打乱集合内元素顺序,叫什么忘了
babys 2013-04-11
  • 打赏
  • 举报
回复
将题放入Set中,如果要有顺序,整个TreeSet放置应该没问题.
槑党 2013-04-11
  • 打赏
  • 举报
回复
可以啊,你也可以把试题加个编号的字段随机数去获取放到集合中返回。比如panduan0001到panduan0050是判断题,你就随机去取10个不重复的就行,然后多选也这样,duoxuan0001到duoxuan0050,随机选10个,单选,danxuan0001到danxuan0100选取30个,然后选项在打乱下顺序就是了
iamguwei1983 2013-04-11
  • 打赏
  • 举报
回复
order by NEWID() sql 可以用这个试试
  • 打赏
  • 举报
回复
引用 9 楼 wey580231 的回复:
引用 6 楼 Byron2011 的回复:http://wenku.baidu.com/view/4b51f71aa300a6c30c229f45?fr=prin 可以参考下我个人总结的一个组卷算法 基于集合的嗯,谢谢啦。看过了以后,感觉想法又开始多了。加入要是让每题的选项也是改变的,这该怎么办呢?
那好办啊 再产生一次随机数 用一次set不就ok了
shine333 2013-04-11
  • 打赏
  • 举报
回复
mysql ? 如果总的题库不是很大的话,直接 SELECT ... ORDER BY rand() LIMIT N

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧