呼び出すたびに新しいランダム シーケンスを作成し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