2010-08-30 52 views
0

这段代码有什么问题?这就是所谓的四组,似乎总是只有两个组合风:在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 

它返回随机字符串,但似乎在非按随机顺序退呢?

回答

1

肯定chaeck了随机对象@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' 
+0

这个解决方案工作,声明它为'Static'解决它。 – Cyclone 2010-08-31 19:01:56

0

如果你正在使用VB.Net,你可以使用.NET随机数发生器

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

的问题可能是调用Randomize()。把它拿出来,它应该工作得很好。 当调用Randomize()时,您正在设置随机数生成器将使用的种子。你应该只调用一次,否则你可能会以相同的值继续播种。

+0

是啊。它使用当前时钟滴答来播种随机数。该刻度不会变化非常快(15.625毫秒)。 – 2010-08-31 00:33:03