用VB写一段随即组合的函数

来源:百度知道 编辑:UC知道 时间:2024/05/21 03:08:10
我现在有2份名单 一份男 一份女

现在要求随即组合 1男 1女 为1个小组

请问怎么写才能达到目的
无相同 多出来的 和空字符为小组

怎么用RND取随机?

一楼的有点小问题,不能随意用一组来循环,因为如果刚好选到多人的那组,那么无论你是多么随机的抽取另一组,其实能组合到的人只有先循环的前面那部分人,而多出来的那部分是永远没份配到组的。
按下边代码可保证两组人都是随机选的:名单不重要,只要有每人的编号就可以了。

Sub 分组排座()
Randomize
Dim A As Integer, B As Integer
A = 20: B = 15
Dim AB(1 To 20, 1 To 2) As Integer
'分别设男女名单数组为1~A和1~B,ab(1 to n,1 to 2)数组来保存两组人的序号是否已组合,n为A,B的较大的值:
'取A和B大的数n来循环
Dim n As Integer, m As Integer, x As Integer
Dim i As Integer, j As Integer, k As Integer, y As Integer
n = IIf(A > B, A, B): m = IIf(A > B, B, A)
'初始化数组,表示所有人都未抽到
For i = 1 To n
AB(i, 1) = False: AB(i, 1) = False
Next i
For i = 1 To n '这里如果n=A,则结果出来时ab(i,1)则是男名单序号,如果n=B,则相反

Do
x = Int(Rnd() * n + 1) '在大数组中抽取一个号
If Not AB(x, 1) Then
AB(x, 1) = True
Exit Do
End If
Loop
y = Int(Rnd() * m + 1) '随机产生一个序号,注意这个不是编号,用于在另组剩余的未组合人员中随机抽选
k = 1: j = 0
Do While k <