您每次调用时都会创建一个新RandomPosition
的随机序列,但是因为您快速连续调用它,它们将具有相同的种子(基于时间)。相同的种子意味着相同的序列。
您应该创建rand
一次变量,然后继续使用它,例如:
Dim rand as New Random()
Dim top = rand.Next (1, 100)
Dim left = rand.Next (1, 100)
或者,如果您真的希望它在自己的函数中,请将随机生成器设为静态,以便它在调用之间保持其状态:
Function RandomPosition()
Static rand = New Random()
Return rand.Next(1, 100)
End Function
以下完整的 VB2010 程序显示了这一点:
Module Module1
Function RandomPosition()
Static rand As Random = New Random()
Return rand.Next(1, 100)
End Function
Sub Main()
Dim top = RandomPosition()
Dim left = RandomPosition()
MsgBox("top = " & CStr(top) & ", left = " & CStr(left))
End Sub
End Module
它在各种运行中输出:
top = 7, left = 93
top = 45, left = 90
top = 44, left = 62