为什么随机数序列不一样?

时间:2016-01-21 18:26:30

标签: vb.net random

我在下面编写了这段代码,希望每次运行时都能返回相同的内容,但事实并非如此。可能有人向我解释为什么每次运行时,一个专门播种的随机数生成器会生成一个不同的数字,因为我编写了与命令行应用程序相同的程序,它运行得很好。

这是我的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 个答案:

答案 0 :(得分:4)

如果将控制台代码放入循环中会发生什么?我打赌你会得到相同的数字序列。控制台运行一次并生成第一个结果,而如果您多次单击该按钮,则实质上会循环遍历随机化结果。

当我这样做时,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 第4次点击0.2308619