经典算法
产生一个1-N 的不重复随机数
2016-07-14 17:28:05

使用Excel 产生不重复随机数的方法修改了放到Access 没想到也适合发上来和大家共享一下一下代码可以产生一个1-N的不重复随机数,N用的是rn控制:

Private Function fncRndNum(rn As Long) '产生1-n不重复随机数

Dim i%, j%, k%, X%, arr

ReDim arr(1 To rn)

For i = 1 To rn

arr(i) = i

Next

'任取数组中两个数,并交换位置,即可得到一组随机排列的不重复的连续整数数组

Randomize '<------------ADD THIS LINE

For i = 1 To rn

j = Int(rn * Rnd) + 1 '任取数组中的一个下标

k = Int(rn * Rnd) + 1 '任取数组中的另一个下标

'交换位置

X = arr(j)

arr(j) = arr(k)

arr(k) = X

Next

fncRndNum = arr

End Function