最近帮老婆写一个小程序,用C#写一个简单的银行业务知识考试系统,试题存放在Access数据库中,需要随机抽取N条记录生成试卷,原本打算用sql的办法生成随机记录,但是似乎每次选出来的试题并不刷新,于是,我采用了如下办法,方法似乎笨了点,但总算搞定,希望大家可以给出更好的解决办法。
1. 得到记录总数T
2. 生成1到T的N个不重复的随机数
3. 根据得到的随机数取出相应行数的记录
代码片段如下:
1. 得到记录总数:
lnk = new LinkAccessDB(strDBFile, "", strPwd);
lnk.OpenDB();
strSql = "select count(*) as num from tb_question_sglsel";
dt = lnk.ExecQuerySql(strSql);
nTotalSglSelNum = Convert.ToInt32(dt.Rows[0]["num"].ToString());
2. 生成不重复的随机数:
private static int[] GetRandom(int nMinValue, intnMaxValue, int nCount)
{
Random rnd = new Random();
int nLength = intnMaxValue- nMinValue + 1;
byte[] keys = new byte[nLeng