vb.net - 生成随机字符串

标签 vb.net string random

我知道有很多这样的线程,但我对 vb.net 很陌生,但我无法编辑给出的源代码来制作我真正想要的内容 所以我想要一个函数,它将生成随机字符串,每个字符串包含 15-32 个字符,每个字符串将具有以下字符(并非全部在同一字符串,但其中一些字符): A-Z a-z 0-9 这是我到目前为止的代码

Functon RandomString()
    Dim s As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    Dim r As New Random
    Dim sb As New StringBuilder
    For i As Integer = 1 To 8
        Dim idx As Integer = r.Next(0, 35)
        sb.Append(s.Substring(idx, 1))
    Next
    return sb.ToString()
End Function

最佳答案

更改字符串以包含 a-z 字符:

Dim s As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"

更改循环以创建随机数量的字符:

Dim cnt As Integer = r.Next(15, 33)
For i As Integer = 1 To cnt

请注意,Next 方法中的上限是互斥的,因此 Next(15, 33) 为您提供一个范围从 15 到 32 的值。

使用字符串的长度从中选择一个字符:

Dim idx As Integer = r.Next(0, s.Length)

由于您要创建随机字符串,而不是单个随机字符串,因此不应在函数内创建随机数生成器。如果您在时间上过于接近地调用该函数两次,您最终会得到相同的随机字符串,因为随机生成器是使用系统时钟进行播种的。因此,您应该将随机生成器发送到函数中:

Function RandomString(r As Random)

所以,总而言之:

Function RandomString(r As Random)
  Dim s As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
  Dim sb As New StringBuilder
  Dim cnt As Integer = r.Next(15, 33)
  For i As Integer = 1 To cnt
    Dim idx As Integer = r.Next(0, s.Length)
    sb.Append(s.Substring(idx, 1))
  Next
  return sb.ToString()
End Function

使用示例:

Dim r As New Random
Dim strings As New List<string>()
For i As Integer = 1 To 10
  strings.Add(RandomString(r))
Next

关于vb.net - 生成随机字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15484742/

相关文章:

vb.net - 加速函数反转字符串

c# - 在 C#.NET 的方法签名中传递 'this' 的 VB.NET 等价物是什么?

javascript - 如何将字母/单词/字符添加到 javascript 字符串中的特殊单词?

c++ - 以常量引用作为输入的函数

python - 创建一长串随机值,没有重复

ruby - 如何在 Ruby 中生成一个非常大的随机整数?

C++ DLL 仅向 VB 应用程序返回第一个字符

c# - 更改 Void 名称? (等于 Private Sub NameOfSub() )

javascript - 为什么我不能在 reduce 回调的元素上使用 string.charCodeAt()

python - 随机时间生成