我正致力于生成随机数的程序。我在生成内部版本号时使用了随机数。我只是想知道随机会有限制吗?继续我的代码提前感谢你。
Private Sub agenerate_Click(sender As Object, e As EventArgs) Handles agenerate.Click
Dim rand As New Random
abuildnumber.Text = rand.Next
Dim exist As String = String.Empty
exist &= "select * from stocks "
exist &= "where build_number=@build"
Using conn As New SqlConnection("server=WIN10;user=admin;password=12345;database=pc_parts")
Using cmd As New SqlCommand
With cmd
.Connection = conn
.CommandType = CommandType.Text
.CommandText = exist
.Parameters.AddWithValue("@build", abuildnumber.Text)
End With
Try
conn.Open()
Dim reader As SqlDataReader = cmd.ExecuteReader
If reader.HasRows Then
reader.Close()
abuildnumber.Text = rand.Next
End If
abrand.Enabled = True
apart.Enabled = True
aquantity.Enabled = True
aday.Enabled = True
amonth.Enabled = True
ayear.Enabled = True
add.Enabled = True
conn.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Using
End Using
End Sub
答案 0 :(得分:0)
是的,随机数有限制。因为它返回INT值所以它的限制根据Int数据类型
<强>参数强>
<强> minValue(最小值)强> 键入:System.Int32 返回的随机数的包含下限。
<强>包括maxValue 强> 键入:System.Int32 返回的随机数的独占上限。 maxValue必须大于或等于minValue。
返回值类型:
System.Int32大于的32位有符号整数 或等于minValue且小于maxValue;也就是说,范围 返回值包括minValue但不包括maxValue。如果minValue等于 返回maxValue,minValue。
这是参考https://msdn.microsoft.com/en-us/library/2dx6wyd4(v=vs.100).aspx
答案 1 :(得分:0)
Random
永远不会“耗尽”数字,如果这是你要求的,但它会产生重复。您应该每次都避免创建一个新的Random
实例,因为这可能会导致数字在所有可能的值中随机分布。您应该创建一个随机数的单一来源,并且每次都从中绘制,而不重新创建它。在您的示例中,类级字段适用于此。
如果您对“随机查看”数字感兴趣,并且重复次数极低,您可能需要调查Guid
。
您的代码确实包含另一个与我有关的问题,主要是abuildnumber.Text = rand.Next
行显示您Option Strict
设置为Off
。这是非常糟糕的做法,你应该尽量避免。它会引入一些细微的错误,一旦你的代码变得更复杂,就很难找到它们。
Using
声明做得很好!我对您在SqlConnection
和 SqlCommand
上正确使用它感到印象深刻,大多数人都会错过后者。