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