1

我想在 vb.net 中生成一个 6 个整数的随机数,它应该是数字,有时也是字母数字。就像 4 或 5 个数字应该是数字,下一个应该是字母数字。我分别创建了这两个数字。像这样

Public Function rand() As String
        'Number
        Dim rng As Random = New Random
        Dim number As Integer = rng.Next(1, 1000000)
        Dim digits As String = number.ToString("000000")
        'Alphnumeric
        Dim s As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
        Dim r As New Random
        Dim sb As New StringBuilder
        For i As Integer = 1 To 5
            Dim idx As Integer = r.Next(0, 35)
            sb.Append(s.Substring(idx, 1))
        Next
    End Function

现在任何人都给我一个想法,在这个函数中我可以返回数字和有时是字符串,或者可能是创建数字和字符串的单个实例。

4

1 回答 1

1

第一个要解决的问题是随机数生成器。如果在短时间距离内调用,您应该只使用一个实例而不是多个返回相同序列的实例。然后很难说出您的要求中的“某事”是什么意思,但是假设您可以使用大约 70% 的数字和 30% 的数字和字符串的混合,那么您调用随机生成器来决定仅包含数字的序列还是混合一个。基于从适当的字符串构建的序列的随机选择的输出

' A global unique random generator'
Dim rng As Random = New Random
Sub Main
    Console.WriteLine(rand())
    Console.WriteLine(rand())
    Console.WriteLine(rand())
    Console.WriteLine(rand())
End Sub

Public Function rand() As String

    Dim sb As New StringBuilder

    ' Selection of pure numbers sequence or mixed one
    Dim pureNumbers = rng.Next(1,11)
    if pureNumbers < 7 then
        ' Generate a sequence of only digits
        Dim number As Integer = rng.Next(1, 1000000)
        Dim digits As String = number.ToString("000000")
        For i As Integer = 1 To 6
            Dim idx As Integer = rng.Next(0, digits.Length)
            sb.Append(digits.Substring(idx, 1))
        Next
    else
        ' Generate a sequence of digits and letters 
        Dim s As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
        For i As Integer = 1 To 6
            Dim idx As Integer = rng.Next(0, 36)
            sb.Append(s.Substring(idx, 1))
        Next
    End if 
    return sb.ToString()
End Function
于 2013-09-07T07:59:12.020 回答