我在下面写了这段代码,希望它每次运行时都返回相同的内容,但事实并非如此。 有人可以向我解释为什么每次运行一个专门播种的随机数生成器都会生成一个不同的数字,因为我编写了与命令行应用程序相同的程序,并且它工作得很好。
这是我的 VB.NET 代码(损坏的代码):
'Bunch of WinForms Code
Private Sub PictureBox1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox1.Click
Randomize(3)
MsgBox(Rnd.ToString)
End Sub
这是我的工作 VB.NET 命令行应用程序:
Imports System.Console
Public Module rnum
Sub Main()
Randomize(3)
WriteLine(Rnd.ToString) 'Returns 0.1387751
End Sub
End Module
控制台代码放入循环中会发生什么?我敢打赌你会收到相同的数字序列。控制台运行 1 次并产生第一个结果,而如果您多次单击该按钮,则实质上是在循环浏览随机结果。
当我这样做时,当我单击按钮 4 次时,我会收到相同的 4 次数字 4 次。
Sub Main()
For x As Integer = 0 To 3
Randomize(3)
Console.WriteLine(Rnd.ToString) 'Returns 0.1387751
Next
Console.ReadLine()
End Sub
生产:
0.1387751
0.05591547
0.8356526
0.2308619
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Randomize(3)
MsgBox(Rnd.ToString)
End Sub
生产
0.1387751 在第一次点击
0.05591547 第二次点击
0.8356526 第三次点击
0.2308619 在第 4 次点击