用VB,如何生成符合条件的不重复随机数列

来源:百度知道 编辑:UC知道 时间:2024/05/14 03:50:56
比如现在有100个数(1-100),要求生成4组随机数列,每组25个数,并且规定第1组数里有40和41中间至少一个
思路是不是先在100个里生成25个随机数,然后剩余的75个中再生成25个,50个里选25,最后25?
具体要怎么写呢?
条件可能会同时有很多,我上面只是举了一个例子
只能再生成随机数以后再朔回
事实上是想做一个能生成加入任意条件的随机数列生成器。

或者能不能先写一段生成4组数的代码给我。
答案满意追加50分

代码如下:

Function getRnd(i As Integer) As Integer '取1-i之间的随机数一个
Randomize
getRnd = Int(Rnd() * i + 1)
End Function

Function getAllRnd(Counter As Integer, jishu As Integer) As Integer() '取Counter个1-jishu之间的随机数
If (Counter > jishu) Then
MsgBox "数字个数不能大于基数"
Exit Function
End If
ReDim arr(Counter) As Integer
i = 0
Do While i < Counter
arr(i + 1) = getRnd(jishu)
found = False
For x = 1 To i
If arr(x) = arr(i + 1) Then
found = True
Exit For
End If
Next
If Not found Then
i = i + 1
End If
Loop

getAllRnd = arr
End Function

Private Sub Command1_Click()
arr = getAllRnd(100, 100)
For i = 1 To UBound(arr)
If (arr(i) = 41 Or arr(i) = 40) Then
arr(0) = arr(1)
arr(1) = arr(i)
arr(i) = arr(0)