请帮忙解决以下代码 - 随机

时间:2014-07-09 14:32:21

标签: asp.net random

我正在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+"'";
    }

1 个答案:

答案 0 :(得分:1)

我要做的是创建一个List<int>对象,其中包含与asp_easy表中每个问题相关联的主键值(即问题ID字段,看起来是no在你的代码中)。

从此列表中选择一个随机数,将其从可用数字列表中删除,然后从数据库中检索该问题编号。

这可以确保您始终获得独特的问题(只要该对象保持不变)并且应该是恒定的时间,或者随着列表大小的缩小而变得更快。

正如其他人所说,你应该收紧数据访问方法,因为通过连接字符串构建查询是一个普遍的坏主意:)

修改:根据proper randomness对您的重要程度,请考虑使用无偏见的随机来源。否则,对于较大样本量的一组候选问题,您可能会选择相同的问题。