我需要一个以下格式的随机数生成器:65X XXX XXXX;不包括1 &4. 这是我完成我的第一个VB.net项目之前的最后一步。如有需要,请回复。
下面是我当前的代码,它工作得很好,除了它不排除数字。如果你能帮助编辑我的代码,我会非常感激。谢谢你!
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim rnd As New Random
Dim str1, str2, str3 As String
str1 = "65" & rnd.Next(0, 9)
str2 = rnd.Next(100, 999)
str3 = rnd.Next(1000, 9999)
ListBox1.Items.Add(str1 & " " & str2 & " " & str3)
End Sub
创建一个随机生成器,而不是在每次单击计时器时创建一个新的生成器。随机生成器使用从系统时钟创建的值作为种子,所以如果您创建它们的时间太接近,它们将生成相同的随机数系列。此外,在设定的间隔内创建它们可能会在随机数中产生不需要的模式。
Private rnd As New Random
可以使用一个函数从一组特定的字符中创建一个随机字符串:
Private Function RandomString(ByVal chars As String, ByVal len As Integer) As String
Dim result As String = ""
For i As Integer = 1 to len
result += chars.Substring(rnd.Next(chars.Length), 1)
Next
Return result
End Function
(注意:使用+=
连接字符串应该只用于短字符串。对于任何超过20个字符的内容,您应该使用StringBuilder
或字符数组来代替。
现在您可以使用这个函数来创建字符串:
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim chars As String = "02356789"
Dim str As String = "65" & _
RandomString(chars, 1) & " " & _
RandomString(chars, 3) & " " & _
RandomString(chars, 4)
ListBox1.Items.Add(str)
End Sub