我对两个变量之间的随机数有疑问。它总是给我两个数字之间相同的数字。不是两个数字之间的随机数。
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Randomize()
Dim rnd As New Random
Dim minval As Integer
Dim maxval As Integer
minval = 1000 / grempamin.Value
maxval = 1000 / grempamax.Value
Timer1.Interval = rnd.Next(maxval, minval)
If MouseButtons = MouseButtons.Left Then
apimouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
apimouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
End If
End Sub
答案 0 :(得分:1)
一些更改
Private Shared rnd As New Random '<<<<<<<<<<<<<
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
'Randomize 'not needed '<<<<<<<<<<<<<
Dim minval As Integer
Dim maxval As Integer
minval = 1000 / grempamin.Value
maxval = 1000 / grempamax.Value
Timer1.Interval = rnd.Next(minval, maxval + 1) '<<<<<<<<<<<<<
If MouseButtons = MouseButtons.Left Then
apimouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
apimouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
End If
End Sub
edit:每个标记注释。如果min和max分别不是min和max,请对rnd.next
进行更改。 Timer1.Interval = rnd.Next(Math.Min(minval, maxval), Math.Max(minval, maxval) + 1) '<<<<<<<<<<<<<
答案 1 :(得分:1)
如果grempamin
和grempamax
的值彼此接近,则将它们除以1000可以得到相同的整数值。这可能就是您的代码中发生的事情。
您没有很好地解释您的代码要求,但是我怀疑您在这里犯了一些基本的数学错误。
我认为grempamin
和grempamax
具有最小和最大秒数,因此,由于计时器间隔为毫秒,因此您需要乘以1000。
如果是这样,那么您的代码示例可能会更好地工作(包括dbasnett的更改):
Private rnd As New Random
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Dim minval As Integer
Dim maxval As Integer
minval = 1000 * grempamin.Value
maxval = 1000 * grempamax.Value
Timer1.Interval = rnd.Next(minval, maxval)
If MouseButtons = MouseButtons.Left Then
apimouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
apimouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
End If
End Sub