读书人

请教从1到n范围内抽取出x个不重复随机

发布时间: 2012-01-26 19:40:46 作者: rapoo

请问从1到n范围内抽取出x个不重复随机数的代码是不是这样写
请问,我希望写一个能够获得x个1 to n范围内的不重复随机数的代码。应该如何写代码。也就是从1、2、3...n这些数中随机挑出x个。
以下代码的作用是获得x个0 to n范围内的不重复随机数,其原理是“快速跳蚤算法”。应该如何改写,才能编程从1 to n范围内抽取。
'初始化
For i=0 to n
a(i)=i
Next
'乱序
For i=0 to (x-1)
r=int(rnd*(n+1))
Swap a(i),a(r)
Next
'拣出
For i=1 to x
b(i)=a(i-1)
Next

[解决办法]
给你一段代码参考一下
Dim blAAA As Boolean
Dim j As Integer
For i = 0 To x
Randomize
r = Int(Rnd * n + 1)
For j = 0 To i
If A(i) = r Then
i = i - 1
blAAA = True
Exit For
End If
Next j
If Not blAAA Then
A(i) = r
Else
blAAA = False
End If
Next i

读书人网 >VB

热点推荐