在vb.net中Randomize()没有正确随机化

时间:2010-08-30 23:52:32

标签: vb.net

这段代码有什么问题?它以四个一组的形式调用,并且似乎总是只有两种组合:

Public Function GetRand() As String
        Randomize()
        Dim r As Integer = CInt(Rnd() * 3)
        Select Case r
            Case 0
                Return str1
            Case 1
                Return str2
            Case 2
                Return str3
            Case 3
                Return str4
            Case Else
                Return str1
        End Select
    End Function

它返回随机字符串,但似乎是以非随机顺序返回它们?

3 个答案:

答案 0 :(得分:1)

问题可能是对Randomize()的调用。拿出来它应该工作正常。 调用Randomize()时,您将设置随机数生成器将使用的种子。你应该只调用一次,否则你可能总是以相同的值播种它。

答案 1 :(得分:1)

绝对查看@zawaideh提及的随机对象:

    Static R As New Random()  'Static so that it only gets initialized once'
    R.Next(0, 4)              'Returns an integer from zero up to but not including 4, so 0,1,2,3'

答案 2 :(得分:0)

如果您使用的是VB.Net,则可以使用.net随机数生成器

Dim random_object As New Random()
Console.WriteLine(random_object.Next().ToString())