现在要求随机产生一份试卷,
初步打算用 random 函数产生一组随机数(比如说30个),放进数组中
然后把这个数组的值赋给SQL语句做为题号,
从数据库中随机抽取30个题目组成随机试卷
问题是
random 函数产生的随机数会重复,如何消除重复,并且个数不减少,仍然为30个
还有用这样的方法产生随机试卷可行吗?
1)直接在数据库中随机选取30条记录
select top 30 * from topic order by newid()
2)代码
Public Function MakeRndSum(ByVal iMin As Integer, ByVal iMax As Integer, ByVal iSum As Integer) As Integer()
'**************************************
'功能:随机生成iMin到iMax之间的iSum个数,将结果作为数组返回给调用程序
'参数:iMin,最小取值,没有则无限制
' iMax,最大取值,没有则无限制
' iSum,需要生成的随机数的个数
'返回值:调用成功,返回一个数组,且数组大小不为0
' 调用失败,返回一个大小为零的数组
'**************************************
Dim iI, iJ, iNum, iTemp As Integer
Dim aiSult() As Integer
ReDim aiSult(iSum)
iNum = 0
For iI = 0 To iSum - 1
Line1:
Randomize()
iTemp = CInt(iMin + Rnd() * (iMax - iMin))
'判断是否有重复的数据
For iJ = 0 To iI - 1
If iTemp = aiSult(iJ) Then
GoTo Line1
End If
Next
'保存数据
aiSult(iNum) = iTemp
iNum = iNum + 1
Next
Return aiSult
End Function
评论