在循环的不同迭代中生成相同值的随机字符串
Random string generating same values in different iterations of loop
我正在函数中创建引用 ID 并将值添加到列表中。
Dim myListOfItems As New List(Of BasketItem)
Dim refID As String = String.Empty
For Each i In myListOfNames
refID = HelpClass.GenerateRandomString(20)
Dim x As New BasketItem
x.RefID = refID
myListOfItems.Add(x)
Next
函数如下所示:
Public Shared Function GenerateRandomString(ByVal length As Integer) As String
Dim chara As Char() = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".ToCharArray()
Dim randomString As String = String.Empty
Dim objRandom As New Random()
For i As Integer = 0 To length Step 1
Dim x As Integer = objRandom.Next(1, chara.Length)
If Not randomString.Contains(chara.GetValue(x).ToString()) Then
randomString += chara.GetValue(x)
Else
i = i - 1
End If
Next
Return randomString
End Function
这一切在我的本地 visual studio 运行 上运行良好。但是当我上传到我的网络服务器时,有几个项目获得相同的值。
这是实时服务器上的输出:
> Biljettinnehavare: 1 | 1XIh4YqBlHmipkPKV576C
> Biljettinnehavare: 2 | 1XIh4YqBlHmipkPKV576C
> Biljettinnehavare: 3 | 1XIh4YqBlHmipkPKV576C
> Biljettinnehavare: 4 | 1XIh4YqBlHmipkPKV576C
> Biljettinnehavare: 5 | qvmupeZhcoQ9YgOWtCLN4
> Biljettinnehavare: 6 | qvmupeZhcoQ9YgOWtCLN4
> Biljettinnehavare: 7 | qvmupeZhcoQ9YgOWtCLN4
> Biljettinnehavare: 8 | qvmupeZhcoQ9YgOWtCLN4
> Biljettinnehavare: 9 | qvmupeZhcoQ9YgOWtCLN4
> Biljettinnehavare: 10 | qvmupeZhcoQ9YgOWtCLN4
> Biljettinnehavare: 11 | DdxK4jibcu9s7gXJw6a3m
> Biljettinnehavare: 12 | DdxK4jibcu9s7gXJw6a3m
> Biljettinnehavare: 13 | DdxK4jibcu9s7gXJw6a3m
> Biljettinnehavare: 14 | DdxK4jibcu9s7gXJw6a3m
> Biljettinnehavare: 15 | 32SWpkFfdgbqMtJGa1siw
> Biljettinnehavare: 16 | 32SWpkFfdgbqMtJGa1siw
真的不知道是什么导致了这个问题。有什么想法吗?
服务器执行循环的速度是否如此之快,并基于时钟使相同的值出现,在这种情况下,有什么方法可以应对这种情况?
将您的变量定义为:
Static objRandom As System.Random = New System.Random()
如答案Random integer in VB.NET
我正在函数中创建引用 ID 并将值添加到列表中。
Dim myListOfItems As New List(Of BasketItem)
Dim refID As String = String.Empty
For Each i In myListOfNames
refID = HelpClass.GenerateRandomString(20)
Dim x As New BasketItem
x.RefID = refID
myListOfItems.Add(x)
Next
函数如下所示:
Public Shared Function GenerateRandomString(ByVal length As Integer) As String
Dim chara As Char() = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".ToCharArray()
Dim randomString As String = String.Empty
Dim objRandom As New Random()
For i As Integer = 0 To length Step 1
Dim x As Integer = objRandom.Next(1, chara.Length)
If Not randomString.Contains(chara.GetValue(x).ToString()) Then
randomString += chara.GetValue(x)
Else
i = i - 1
End If
Next
Return randomString
End Function
这一切在我的本地 visual studio 运行 上运行良好。但是当我上传到我的网络服务器时,有几个项目获得相同的值。
这是实时服务器上的输出:
> Biljettinnehavare: 1 | 1XIh4YqBlHmipkPKV576C
> Biljettinnehavare: 2 | 1XIh4YqBlHmipkPKV576C
> Biljettinnehavare: 3 | 1XIh4YqBlHmipkPKV576C
> Biljettinnehavare: 4 | 1XIh4YqBlHmipkPKV576C
> Biljettinnehavare: 5 | qvmupeZhcoQ9YgOWtCLN4
> Biljettinnehavare: 6 | qvmupeZhcoQ9YgOWtCLN4
> Biljettinnehavare: 7 | qvmupeZhcoQ9YgOWtCLN4
> Biljettinnehavare: 8 | qvmupeZhcoQ9YgOWtCLN4
> Biljettinnehavare: 9 | qvmupeZhcoQ9YgOWtCLN4
> Biljettinnehavare: 10 | qvmupeZhcoQ9YgOWtCLN4
> Biljettinnehavare: 11 | DdxK4jibcu9s7gXJw6a3m
> Biljettinnehavare: 12 | DdxK4jibcu9s7gXJw6a3m
> Biljettinnehavare: 13 | DdxK4jibcu9s7gXJw6a3m
> Biljettinnehavare: 14 | DdxK4jibcu9s7gXJw6a3m
> Biljettinnehavare: 15 | 32SWpkFfdgbqMtJGa1siw
> Biljettinnehavare: 16 | 32SWpkFfdgbqMtJGa1siw
真的不知道是什么导致了这个问题。有什么想法吗?
服务器执行循环的速度是否如此之快,并基于时钟使相同的值出现,在这种情况下,有什么方法可以应对这种情况?
将您的变量定义为:
Static objRandom As System.Random = New System.Random()
如答案Random integer in VB.NET