有随机有限制吗?

时间:2017-11-23 05:08:08

标签: sql-server vb.net random

我正致力于生成随机数的程序。我在生成内部版本号时使用了随机数。我只是想知道随机会有限制吗?继续我的代码提前感谢你。

 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

2 个答案:

答案 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上正确使用它感到印象深刻,大多数人都会错过后者。