请问一下,关于vb的rnd函数的情况?如下题目所示

Private Sub Form_Click()
Dim a(10) As Integer
Randomize
For i = 0 To 9
a(i) = Int(21 + 50 * Rnd()) '可以拆开吗?
Next

For i = 0 To 9
Print a(i);
Next

b = a(i)
flag = 1 '假设不重复

For i = 0 To 9
If a(i) = b Then
flag = 0
i = i - 1
Exit For
End If
Next

If flag = 1 Then
Print a(i)

End If

End Sub

为毛输出以后最后一个数是0 我改啊改啊的总有一个俩数的重复

达令说
浏览 425回答 2
2回答

梦里花落0921

给你两个思路1.每生成一个数然后利用 application.worksheetfunction.countif(range("a:a"),新生成的数) 得出有没有重复没有 则 ,就填入excel的格子内,比如按A列填下来有则不填入excel2.定义一个字符串 比如 str没生成一个数,就利用 instr(1,str,"-" & 新生成的数 & "-") 判断在str 里面有没有存在没有存在就是不重复,并利用 str = str & “-” & 新生成的数& "-" 更新str看错 以为是excel 的问题呢那你采用 第二个思路试试

收到一只叮咚

Private Sub Form_Click() Dim a(10) As Integer    Randomize    For i = 0 To 9      a(i) = Int(21 + 50 * Rnd())            If i > 0 Then        flag = 1                        '假设不重复        For j = 0 To i - 1          If a(i) = a(j) Then            flag = 0            i = i - 1            Exit For          End If        Next      End If      If flag = 1 Then Print a(i)    Next End Sub
打开App,查看更多内容
随时随地看视频慕课网APP