我正在生成要插入数组的随机值。 例如1到8之间的数字,我想使用此值生成一个数组,而不重复任何值。
这是我的代码:
Function randomValues()
Dim min
Dim max
Dim arr()
f = 0
y = 0
min = 1
max = 8
Randomize
f = (y+1)
ReDim Preserve arr(f)
x = Int(Rnd*(max-min+1)) + min
arr(y) = x
'LOOP
Do While UBound(arr) < 8
x = Int(Rnd*(max-min+1)) + min
If InStr(arr(f-1), x) <> 1 Then
ReDim Preserve arr(f)
arr(f) = x
f = f+1
End If
Loop
MsgBox Join(arr, "-")
End Function
例如,当前输出为:
3-6-3-7-8-1-7-6
答案 0 :(得分:2)
您的要求基本上是从一个池中提取数字,因此我将完全实现这一点。用可能的值填充数据结构,然后删除随机元素,直到没有剩余元素为止。我将对源数据结构使用ArrayList
,因为它允许删除任意偏移量的元素。
Set src = CreateObject("System.Collections.ArrayList")
For i = min To max
src.Add i
Next
ReDim arr(max-1)
i = 0
While src.Count <> 0
n = Int(src.Count * Rnd)
arr(i) = src(n)
src.RemoveAt(n)
i = i + 1
Wend
WScript.Echo Join(arr, ",")