随机散列的实现(VB2005)

编写过程序的人都知道,随机散列是我们经常要实现的问题。

什么是随机散列?比方说,现在有一个数列1、2、3、4、5、6。我希望得到一个随机的打乱顺序的数列,例如:2,5,6,3,4,1。这个新的数列就是原数列的随机散列。

实际情况中,我们经常需要给定一个范围,就能得到一个随机散列。比方说:给定[2,7],通过运算得到一个散列:6,4,5,7,2,3。

下面是实现随机散列的一个函数,用的是VB2005编写的。

'函数名: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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值