2010-08-30 58 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