正如标题所说,我有一个20个整数的数组。每次我生成一个新的随机数,我想检查它是否已经包含在数组中。如果数组中存在该数字,我想重新生成一个随机数并重新检查该数组。最后,我的20个整数数组应该包含7到30之间的所有唯一值。我已经创建了一个完美的代码混乱。感谢这里的专家提供的一些帮助。非常感谢。
Dim Low, High, tmpNo As Double
Dim myarray(20) As Integer
Dim i, x As Integer
Low = 7
High = 30
i = 0
x = 0
For i = 0 To 19
tmpno = Int((High - Low + 1) * Rnd() + Low)
If i = 0 Then
myarray(i) = tmpno
tmpno = Int((High - Low + 1) * Rnd() + Low)
End If
For x = 0 To Len(i)
If tmpno = myarray(x) Then
tmpno = Int((High - Low + 1) * Rnd() + Low)
x = 0
Else
If myarray(x + 1) = 0 Then
myarray(x + 1) = tmpno
tmpno = Int((High - Low + 1) * Rnd() + Low)
x = 0
End If
End If
Next
Next
答案 0 :(得分:0)
您使用字典而不是数组。您只需设置密钥。您无法添加重复的密钥,因此请使用On Error Resume Next
和If err.number <> 0 then ...
Dictionary对象相当于PERL关联数组。项目可以是任何形式的数据,并存储在数组中。每个项目都与一个唯一键相关联。该键用于检索单个项目,通常是整数或字符串,但可以是除数组之外的任何内容。
以下代码说明了如何创建Dictionary对象:
Visual Basic Script Copy Code
Dim d ' Create a variable.
Set d = CreateObject("Scripting.Dictionary")
d.Add "a", "Athens" ' Add some keys and items.
d.Add "b", "Belgrade"
d.Add "c", "Cairo"
...