我正在asp.net上开发一个网络应用程序,这是一个在线考试系统。现在,在这个我从随机基地的表格中获取问题和答案。我想要做的是忽略已生成一次的数字,以便不再重复相同的问题。以下是我用过的代码。该怎么办?
Random rnd = new Random();
int i = rnd.Next(startid, endid + 1);
getQuestion(i);
public void getQuestion(int no)
{
String str = "select * from asp_easy where no = '"+no+"'";
}
答案 0 :(得分:1)
我要做的是创建一个List<int>
对象,其中包含与asp_easy
表中每个问题相关联的主键值(即问题ID字段,看起来是no
在你的代码中)。
从此列表中选择一个随机数,将其从可用数字列表中删除,然后从数据库中检索该问题编号。
这可以确保您始终获得独特的问题(只要该对象保持不变)并且应该是恒定的时间,或者随着列表大小的缩小而变得更快。
正如其他人所说,你应该收紧数据访问方法,因为通过连接字符串构建查询是一个普遍的坏主意:)
修改:根据proper randomness对您的重要程度,请考虑使用无偏见的随机来源。否则,对于较大样本量的一组候选问题,您可能会选择相同的问题。