不同的随机值

different random values

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

您的要求基本上是从一个池中抽取数字,所以我会准确地实现它。用可能的值填充数据结构,然后删除随机元素,直到剩下 none。我会为源数据结构使用 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, ",")