检查是否已经存在随机数VBscript

时间:2020-05-04 13:10:58

标签: vbscript

我写的代码会生成1-9之间的随机数。

我现在想添加到此并生成一个随机数,但是如果以前已经使用过该数字,则生成一个新数字。

Sub main()
 Dim max,min
max=9
min=1
Randomize
MsgBox(Int((max-min+1)*Rnd+min))

//生成1-9之间的随机数

我曾经尝试实现一个循环,但是我不确定它会如何工作,因为我需要将生成的数字保留在内存中

 If Int =  random
    Msgbox("Already in use")
End If

If Int = not random Then
    Msgbox("Can be used")
End If

End Sub

1 个答案:

答案 0 :(得分:2)

像您这样的声音只想跟踪已经选择了哪些随机数。您可以通过多种方法来处理此问题(例如,使用数组,哈希表/字典,数字位掩码等)

我在下面介绍的解决方案类似于数字位掩码,但是使用字符串。从全零(例如“ 0000”)开始,字符串中的每个可索引位置都填充一(1),直到字符串变为全1(例如“ 1111”)。尽管可能会过分简化-因为它假设您的分钟数始终为一(1),所以它应该使您入门。

4 4 4
15
195
1 1 4
195

样本输出:

Dim min : min=1
Dim max : max=9
Dim result : result = ""
Dim r, s: s = String(max, "0")

Randomize

Do
    r = Int((max-min+1)*Rnd+min)
    If "0" = Mid(s, r, 1) Then
        WScript.Echo "Can be used: " & r
        result = result & ":" & r
        s = Left(s, r-1) & "1" & Right(s, max-r)
    Else
        WScript.Echo "Already in use: " & r
    End If
Loop Until String(max, "1") = s

WScript.Echo "Result" & result

希望这会有所帮助。