编写过程序的人都知道,随机散列是我们经常要实现的问题。
什么是随机散列?比方说,现在有一个数列1、2、3、4、5、6。我希望得到一个随机的打乱顺序的数列,例如:2,5,6,3,4,1。这个新的数列就是原数列的随机散列。
实际情况中,我们经常需要给定一个范围,就能得到一个随机散列。比方说:给定[2,7],通过运算得到一个散列:6,4,5,7,2,3。
'函数名:GetRndList
'作用:获得一个随机散列
'参数MinValue:随机散列的下限
'参数MaxValue:随机散列的上限
'参数Count:随机散列的个数
Public Function GetRndList( _
ByVal MinValue As Integer,_
ByVal MaxValue As Integer,_
ByVal Count As Integer
) As Integer()
If Count <= 0 OrElse Count > MaxValue - MinValue + 1 Then Return Nothing
Dim mBase() As Integer,mList() As Integer
Dim i As Integer,j As Integer,mR As New Random
ReDim mBase(Count - 1)
ReDim mList(MaxValue - MinValue)
For i = 0 To MaxValue - MinValue
mList(i) = i + MinValue
Next
For i = MaxValue - MinValue To MaxValue - MinValue - Count + 1 Step -1
j = mR.Next(i + 1)
Call SwapNumber(mList(i),mList(j))
Next
For i = 0 To Count - 1
mBase(i) = mList(MaxValue - MinValue - i)
Next
Return mBase
End Function