'可以指定数值范围中的指定个数的随机数,返回随机数数组。 Private Function RandomNumber(lMin As Long, lMax As Long, lCount As Long) As Long() Dim n() As Long, i As Long, j As Long, q As Long, r() As Long On Error GoTo Err If lMax - lMin <= lCount - 1 Then ReDim r(lMin To lMax) For i = lMin To lMax r(i) = i Next Else ReDim r(j To lCount - 1) ReDim n(lMin To lMax) While j < lCount q = Int(Rnd(1) * (lMax - 1) + 1) If q >= lMin And q <= lMax Then If n(q) = 0 Then n(q) = 1 j = j + 1 r(j - 1) = q ' Debug.Print q End If
End If DoEvents Wend End If Err: RandomNumber = r End Function
看这贴 http://community.csdn.net/Expert/topic/4631/4631750.xml?temp=.9927332和你有相似的问题,不想再贴一次了
Private Function RandomNumber(lMin As Long, lMax As Long, lCount As Long) As Long()
Dim n() As Long, i As Long, j As Long, q As Long, r() As Long
On Error GoTo Err
If lMax - lMin <= lCount - 1 Then
ReDim r(lMin To lMax)
For i = lMin To lMax
r(i) = i
Next
Else
ReDim r(j To lCount - 1)
ReDim n(lMin To lMax)
While j < lCount
q = Int(Rnd(1) * (lMax - 1) + 1)
If q >= lMin And q <= lMax Then
If n(q) = 0 Then
n(q) = 1
j = j + 1
r(j - 1) = q
' Debug.Print q
End If
End If
DoEvents
Wend
End If
Err:
RandomNumber = r
End Function