我现在做一个考试系统,题库里分为专用题和通用题,怎样随机出100道不重复的题,并且通用题和专用题 出题的比例为4:1。大家有没有好的解决思路?

解决方案 »

  1.   

    思路1:从题目的个数实现
    比如你定义整个试卷n个题目:
    那么在通用题抽出n*0.8个题目.在专用题中抽取n*0.2个题目.
    思路2:从分数上实现
    你在通用题中抽出的题目的总分数=80分,专用题中抽出的题目的总分数=20分!
      

  2.   

    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已在前面出现过就再产生随机数循环上面一行
    }
      

  3.   

    抽题算法不复杂的
    给你个思路吧
    1、把所有同类试题的ID放入一个List
    2、取随机数 i在 0 -- List.size()-1 之间
    3、用List.remove(i) 取出被选题号,并将它从List中移除
    4、取完了没有?没有的话回到第2步