50分征求大家的思路!高手帮忙啊!

zhangpan816 2006-12-12 09:50:06
我现在做一个考试系统,题库里分为专用题和通用题,怎样随机出100道不重复的

题,并且通用题和专用题 出题的比例为4:1。大家有没有好的解决思路?
...全文
146 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
welshem 2006-12-12
  • 打赏
  • 举报
回复
至于有人提出的打乱问题,也可以用这个算法^_^

welshem 2006-12-12
  • 打赏
  • 举报
回复
抽题算法不复杂的
给你个思路吧
1、把所有同类试题的ID放入一个List
2、取随机数 i在 0 -- List.size()-1 之间
3、用List.remove(i) 取出被选题号,并将它从List中移除
4、取完了没有?没有的话回到第2步
liaohaiying 2006-12-12
  • 打赏
  • 举报
回复
1,专用题和通用题分开,如先取通用题(80)再取专用题(20)
for (int i=0,i<80,i++)
{
id=随机数;//用随机函数得出(规定它的范围不超出题库ID的大小)
如果id不在前面出现过就到题库取出ID为id的题目
如果id已在前面出现过就再产生随机数循环上面一行
}for (int i=0,i<20,i++)
{
id=随机数;//用随机函数得出(规定它的范围不超出题库ID的大小)
如果id不在前面出现过就到题库取出ID为id的题目
如果id已在前面出现过就再产生随机数循环上面一行
}
2,专用题和通用题混在一起
int x=0;//通用题数目
int y=0;//专用题数目
for (int i=0,i<100,i++)
{
id=随机数;//用随机函数得出(规定它的范围不超出题库ID的大小)
如果id不在前面出现过就到题库取出ID为id的题目,如果该题是专用题则y=y+1;是通用题则x=x+1;如果y>=20了就只取通用题,如果x>=80了就只取专用题。
如果id已在前面出现过就再产生随机数循环上面一行
}
Sunny319 2006-12-12
  • 打赏
  • 举报
回复
思路1:从题目的个数实现
比如你定义整个试卷n个题目:
那么在通用题抽出n*0.8个题目.在专用题中抽取n*0.2个题目.
思路2:从分数上实现
你在通用题中抽出的题目的总分数=80分,专用题中抽出的题目的总分数=20分!
zs_han 2006-12-12
  • 打赏
  • 举报
回复

专用题与通用题你是怎么分类的,那么4:1不就好分了,4/(4+1)*100为专用80题,1/(4+1)*100为通用20题;这是考试题中最简单的题型分配了.也许我没有理解你的意思.




welshem 2006-12-12
  • 打赏
  • 举报
回复
按楼主的设计不实用,因为你只能针对一种考试

我的思路是:
1、将题库分层:考试科目、科目下的知识点、知识点下的试题
2、提供试卷模版配置:当前模板对应的考试科目、此科目下知识点出题量
welshem 2006-12-12
  • 打赏
  • 举报
回复
按楼主的设计实用,因为你只能针对一种考试

我的思路是:
1、将题库分层:考试科目、科目下的知识点、知识点下的试题
2、提供试卷模版配置:当前模板对应的考试科目、此科目下知识点出题量
zhangpan816 2006-12-12
  • 打赏
  • 举报
回复
那 4:1的比例呢,该怎么解决?
奇伢 2006-12-12
  • 打赏
  • 举报
回复
按类型标识啊。。。

题号不重复,就要记录下以前的题号,如果有的话,就重新再随机一次咯。。。。

81,094

社区成员

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

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