我的程序生成一个长度为25个字符的随机字符串。为此,我制作了一个包含字符的List(Of String)并生成一个随机字符,我正在使用randomNumber = Int((60 * Rnd() * Rnd()))
,这给最终字符串中的每个条目(但每次最终字符串)都赋予了一个不同的字符是一样的我怎么做,所以它并不总是一样?
Public Class Form1
Dim charlist As New List(Of String)
Dim i As Integer
Dim length As Integer
Dim randomNumber As Integer
Dim code1 As String
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
i = 1
length = 25
charlist.Add("a")
charlist.Add("b")
charlist.Add("c")
charlist.Add("d")
charlist.Add("e")
charlist.Add("f")
charlist.Add("g")
charlist.Add("h")
charlist.Add("i")
charlist.Add("j")
charlist.Add("k")
charlist.Add("l")
charlist.Add("m")
charlist.Add("n")
charlist.Add("o")
charlist.Add("p")
charlist.Add("q")
charlist.Add("r")
charlist.Add("s")
charlist.Add("t")
charlist.Add("u")
charlist.Add("v")
charlist.Add("w")
charlist.Add("x")
charlist.Add("y")
charlist.Add("A")
charlist.Add("B")
charlist.Add("C")
charlist.Add("D")
charlist.Add("E")
charlist.Add("F")
charlist.Add("G")
charlist.Add("H")
charlist.Add("I")
charlist.Add("J")
charlist.Add("K")
charlist.Add("L")
charlist.Add("M")
charlist.Add("N")
charlist.Add("O")
charlist.Add("P")
charlist.Add("Q")
charlist.Add("R")
charlist.Add("S")
charlist.Add("T")
charlist.Add("U")
charlist.Add("V")
charlist.Add("W")
charlist.Add("X")
charlist.Add("Y")
charlist.Add("Z")
charlist.Add("0")
charlist.Add("1")
charlist.Add("2")
charlist.Add("3")
charlist.Add("4")
charlist.Add("5")
charlist.Add("6")
charlist.Add("7")
charlist.Add("8")
charlist.Add("9")
While i < length
randomNumber = Int((60 * Rnd() * Rnd()))
code1 = code1 + charlist(randomNumber)
i = i + 1
End While
txtGenerate.Text = code1
End Sub
答案 0 :(得分:0)
您需要先致电Randomize()
,然后再致电Rnd()
代码示例:
Randomize()
While i < length
randomNumber = Int((60 * Rnd() * Rnd()))
code1 = code1 + charlist(randomNumber)
i = i + 1
End While
从MSDN:Rnd function
在调用Rnd之前,使用不带参数的Randomize语句使用基于系统计时器的种子初始化随机数生成器。
答案 1 :(得分:0)
这是一个稍微整洁的版本:
Public Module RandomUtils
Private random As New Random
Public Function RandomString(length as Integer, Optional chars as String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789") as String
Return New string(Enumerable.Repeat(1, length).Select(Function(i) chars(random.Next(chars.Length))).ToArray())
End Function
End Module
在您的表单中像这样使用它:
Dim r as String = RandomUtils.RandomString(25)
如果要更改使用的字符,请为可选参数提供一个字符串:
Dim r as String = RandomUtils.RandomString(25, "abc") 'random 25 char string using only a, b or c
请注意,如果用户看到此字符串,这很可能会产生诅咒字