Arrays 从九个随机数中选择四个,不重复

Arrays 从九个随机数中选择四个,不重复,arrays,if-statement,vb6,Arrays,If Statement,Vb6,我想生成9个随机数。然后我从9中得到4个随机数,但这四个随机项*不能重复。 有28种可能的结果。随机化很好,但我不明白为什么我不能选中复选框。我已经试了一整天了请帮帮我 Dim rn As New Random Dim n(9) As Integer n(1) = rn.Next(1, 2) n(2) = rn.Next(1, 3) n(3) = 1 n(4) = rn.Next(1, 3) n(5) = 1 n(6) = rn.N

我想生成9个随机数。然后我从9中得到4个随机数,但这四个随机项*不能重复。 有28种可能的结果。随机化很好,但我不明白为什么我不能选中复选框。我已经试了一整天了请帮帮我

    Dim rn As New Random
    Dim n(9) As Integer
    n(1) = rn.Next(1, 2)
    n(2) = rn.Next(1, 3)
    n(3) = 1
    n(4) = rn.Next(1, 3)
    n(5) = 1
    n(6) = rn.Next(1, 4)
    n(7) = rn.Next(1, 7)
    n(8) = rn.Next(1, 4)
    n(9) = rn.Next(1, 3)

    Dim loopcount As Integer = 4
    Dim l(4), ln, lm As Integer
    ln = 1
    lm = 1

    l(1) = rn.Next(1, 9)
    l(2) = rn.Next(1, 9)
    While l(2) = l(1)
        l(2) = rn.Next(1, 9)
    End While
    l(3) = rn.Next(1, 9)
    While l(3) = l(2) Or l(3) = l(1)
        l(3) = rn.Next(1, 9)
    End While
    l(4) = rn.Next(1, 9)
    While l(4) = l(3) Or l(4) = l(2) Or l(4) = l(1)
        l(3) = rn.Next(1, 9)
    End While

    MsgBox(l(1) & l(2) & l(3) & l(4))
    MsgBox(n(1) & n(2) & n(3) & n(4) & n(5) & n(6) & n(7) & n(8) & n(9))

    While loopcount > 0
        If ln = 1 Then lm = l(1)
        If ln = 2 Then lm = l(2)
        If ln = 3 Then lm = l(3)
        If ln = 4 Then lm = l(4)

        If l(ln) = 1 & n(lm) = 1 Then 1.CheckState = 1
        If l(ln) = 1 & n(lm) = 2 Then 2.CheckState = 1
        If l(ln) = 2 & n(lm) = 1 Then 3.CheckState = 1
        If l(ln) = 2 & n(lm) = 2 Then 4.CheckState = 1
        If l(ln) = 2 & n(lm) = 3 Then 5.CheckState = 1
        If l(ln) = 3 & n(lm) = 1 Then 6.CheckState = 1
        If l(ln) = 4 & n(lm) = 1 Then 7.CheckState = 1
        If l(ln) = 4 & n(lm) = 2 Then 8.CheckState = 1
        If l(ln) = 4 & n(lm) = 3 Then 9.CheckState = 1
        If l(ln) = 5 & n(lm) = 1 Then 10.CheckState = 1
        If l(ln) = 6 & n(lm) = 1 Then 11.CheckState = 1
        If l(ln) = 6 & n(lm) = 2 Then 12.CheckState = 1
        If l(ln) = 6 & n(lm) = 3 Then 13.CheckState = 1
        If l(ln) = 6 & n(lm) = 4 Then 14.CheckState = 1
        If l(ln) = 7 & n(lm) = 1 Then 15.CheckState = 1
        If l(ln) = 7 & n(lm) = 2 Then 16.CheckState = 1
        If l(ln) = 7 & n(lm) = 3 Then 17.CheckState = 1
        If l(ln) = 7 & n(lm) = 4 Then 18.CheckState = 1
        If l(ln) = 7 & n(lm) = 5 Then 19.CheckState = 1
        If l(ln) = 7 & n(lm) = 6 Then 20.CheckState = 1
        If l(ln) = 7 & n(lm) = 7 Then 21.CheckState = 1
        If l(ln) = 8 & n(lm) = 1 Then 22.CheckState = 1
        If l(ln) = 8 & n(lm) = 2 Then 23.CheckState = 1
        If l(ln) = 8 & n(lm) = 3 Then 24.CheckState = 1
        If l(ln) = 8 & n(lm) = 4 Then 25.CheckState = 1
        If l(ln) = 9 & n(lm) = 1 Then 26.CheckState = 1
        If l(ln) = 9 & n(lm) = 2 Then 27.CheckState = 1
        If l(ln) = 9 & n(lm) = 3 Then 28.CheckState = 1

        ln = ln + 1
        loopcount = loopcount - 1
    End While

    Call Generate()

我认为您需要重命名复选框或使用方括号:

[1]。例如,CheckState=1。
此外,您还使用了
&
,它应该是

If l(ln) = 1 & n(lm) = 1 Then 1.CheckState = 1
…应该是

If l(ln) = 1 And n(lm) = 1 Then [1].CheckState = 1
虽然这可以缩短为

[1].CheckState = 1 And (l(ln) = 1) And (n(lm) = 1)

我认为您需要重命名复选框或使用方括号:

[1]。例如,CheckState=1。
此外,您还使用了
&
,它应该是

If l(ln) = 1 & n(lm) = 1 Then 1.CheckState = 1
…应该是

If l(ln) = 1 And n(lm) = 1 Then [1].CheckState = 1
虽然这可以缩短为

[1].CheckState = 1 And (l(ln) = 1) And (n(lm) = 1)

谢谢回复,复选框有不同的名称。我只是把它们改成了数字,因为它们很长,显示它们是28,但如果有帮助的话,我可以在原始代码中给出原始名称。@Wesite:是的。我也意识到了这一点谢谢:)这解决了一切。我很粗心。多谢各位much@Jan:一点问题也没有,Jan。除了此之外,您还可以使用
vbChecked
常量,以及复选框的
Value
属性,使代码更具可读性。感谢您的回复,复选框具有不同的名称。我只是把它们改成了数字,因为它们很长,显示它们是28,但如果有帮助的话,我可以在原始代码中给出原始名称。@Wesite:是的。我也意识到了这一点谢谢:)这解决了一切。我很粗心。多谢各位much@Jan:一点问题也没有,Jan。除了此之外,您还可以使用
vbChecked
常量,使代码更可读,以及复选框的
Value
属性。