导航菜单
首页 >  影像电子学基础期末考试题型  > 在线考试系统的改进十篇

在线考试系统的改进十篇

在线考试系统的改进 篇1

1 随机抽题分析

在.NET framework中提供了一个专门用来产生随机数的类——System.Random类,这个类属于自动导入的System命名空间,在ASP.NET中可以直接使用这个类。利用该类可以在程序中产生所谓的”伪随机数”。System.Random类中的Next Double方法、Next Bytes方法和Next方法都可以产生随机数。Next Double方法产生一个介于0.0和1.0之间的随机数,且随机数有可能相同Next Bytes方法能产生一个数组,但不能限定已产生的数组中每个元素都在指定的范围内;Next方法可以利用两个参数(int Min Value int Max Value)产生指定个数的在指定范围内的数,该方法被两次重载,分别为:”Next(int Max Value)”用来取得小于”Max Value”的非负随机数,”Next()”用来取得任一个非负随机数,但不能确定数字互不相同,可以使用循环结构产生指定数目的一组数字,在循环过程中可以把每一次产生的数字和已产生的数字进行比较,这样就可以得到指定数目的一组互不相同的随机非负整数。

还有比较常用的一种方法:利用SQL的newid()函数完成随机抽题功能。

上述前三种方法中,可以用Next方法来产生指定数目的一组数字从数据库中选取试题时,还要编写比较复杂的SQL语句,才能完成随机抽题的功能,而且不能做到让n个同学之间所抽题目互不完全相同,第四种方法虽然较前面简单,但也不能做到让n个同学之间所抽题目互不完全相同。

2 改进方法

综合考虑前面几种方法,分析可知,随机函数的随机性决定于其随机种子的唯一性。在此想到能确定一个用户的客观条件,惟有时间和空间的结合,因此利用用户抽题的时刻与其使用电脑的IP相结合为种子。我们可以通过以下语句获得用户IP和当前时刻:

那么怎么让它们完美结合呢?我们考虑使用一种简单的方法,将s Array[2]和s Array[3](选几个结合依网络大小而定)和当前时刻依序拼到一起转化为一个整数(当然也有其他组合方法,读者可以自行考虑),这样得到的种子必然各不相同,转化语句如下:

3 测试效果

我们利用100个学生在100道题中选取5个题做测试,得到题目被选取曲线如图1~图2所示。

可以看出,改进后的波动比改进前要平稳(改进后分布相对均匀)。

4 结论

相关推荐: