我正在进行网络请求,需要在每个网址请求中输入静态+随机字符(数字和字母):
Dim postData1 As String = "http://www.xxx.com/......" & rdm & "xxxyyyzzz.htm"
Dim postReq1 As HttpWebRequest = DirectCast(WebRequest.Create(postData2), HttpWebRequest)
Dim postData2 As String = "http://www.xxx.com/......" & rdm & "xxxyyyzzz.htm"
Dim postReq2 As HttpWebRequest = DirectCast(WebRequest.Create(postData2), HttpWebRequest)
etc
请求(总共6个)保持循环。这是我用于随机的代码:
Dim chars = "abcdefghijklmnopqrstuvwxyz0123456789"
Dim random = New Random()
Dim result = New String(Enumerable.Repeat(chars, 3).[Select](Function(s) s(random.[Next](s.Length))).ToArray())
Dim rdmpart = "x1y2z3"
rdm = rdmpart & result
我需要一系列网址循环并在每个请求上生成一个新的rdm。怎么可能?每当我打电话给“rdm”时,它都会给我相同的响应。提前谢谢。
以下是解决方案:
终于工作了!这让我疯了:) 根据Frito的回答,这就是我的所作所为:
Public Shared Function rdm() As String
Static random As New Random()
Dim chars = "abcdefghijklmnopqrstuvwxyz0123456789"
Dim result = New String(Enumerable.Repeat(chars, 3).[Select](Function(s) s(random.[Next](s.Length))).ToArray())
Dim rdmpart = "x1y2z3"
rdm = rdmpart & result
End Function
用一个简单的“rdm()调用”Yeay!
答案 0 :(得分:1)
试试这个:
随机使用同一时间种子。
所以,只使用一个随机对象并初始化它。
抱歉我的英语不好。答案 1 :(得分:1)
我在VB上非常生疏,但你可能想尝试这样的东西......
Public Class CustomRandomGenerator
Private Shared myRandom as New Random()
Public Shared Function GenerateRandomString() As String
Dim chars = "abcdefghijklmnopqrstuvwxyz0123456789"
Dim result = New String(Enumerable.Repeat(chars, 3).[Select](Function(s) s(random.[Next](s.Length))).ToArray())
Dim rdmpart = "x1y2z3"
rdm = rdmpart & result
Return result
End Function
End Class
“Private Shared myRandom as New Random()”主要是您正在寻找的内容。正如“Chachi”试图解释的那样,你需要只有一个随机生成器。这是因为Random对象是一个在它的“Next()”调用上给出sudo-random值的函数。当您调用Random构造函数时,它使用系统当前时间为其内部函数提供种子值。
根据您正在使用的.Net版本,Random()构造函数将始终以系统时间或“0”播种。如果每次运行代码时总是得到相同的结果,那么将“New Random()”部分更改为“New Random(System.DateTime.Now.Ticks)”之类的内容,你应该会很好。 :-)
最后,您将使用“CustomRandomGenerator.GenerateRandomString()”在代码中调用它。我想如果你不熟悉“共享”方法/变量,可能需要提一下。
答案 2 :(得分:0)
我认为您的问题是,每次要生成随机网址时都要创建New Random()
,这不是正确使用它的方式(它使用当前时间作为种子,所以如果你的代码运行得足够快,每次都会生成相同的随机数序列。这是一个应该有效的例子:
Sub Main()
Dim chars = "abcdefghijklmnopqrstuvwxyz0123456789"
Dim random = New Random()
For i = 0 To 10
Dim result = New String(Enumerable.Repeat(chars, 3).[Select](Function(s) s(random.[Next](s.Length))).ToArray())
Dim rdmpart = "x1y2z3"
Dim rdm = rdmpart & result
Dim postData As String = "http://www.xxx.com/......" & rdm & "xxxyyyzzz.htm"
Dim postReq As HttpWebRequest = DirectCast(WebRequest.Create(postData), HttpWebRequest)
Next
End Sub