不同的随机值

时间:2018-08-09 15:45:44

标签: vbscript

我正在生成要插入数组的随机值。 例如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

1 个答案:

答案 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, ",")