2012-02-08 115 views
3

可能重複:
Random number generator not working the way I had planned (C#)Random.Next()始終給予相同的結果

我經歷了基本的C#編程,我目前做一個滾模。這個應用程序可以捲起四個骰子。我遇到的問題是骰子總是產生相同的結果。我使用了一種方法,其中隨機數生成器從1到6生成一個數字,然後選擇適當的圖片。我爲每個圖像框重複下面的方法,因爲用戶可以輸入他們想要滾動的骰子數量。我的問題是,骰子每次都會產生相同的圖片。我究竟做錯了什麼?

public Image displaypic(PictureBox box) 
    { 
     string picchoice; 
     int number; 

     Image picture = box.Image; 

     //Prevents Redundant Images 
     Image displaying = box.Image; 
     do 
     { 
      //picks a die to display  
      Random rand = new Random(); 
      number = rand.Next(1, 7); 

      picchoice = number.ToString(); 

      //select an image from the image selection method 
      picture = diepic(picture, picchoice); 

     } 
     while (picture == displaying); 

     //return image 
     return picture; 
    } 

回答

7

隨機數不是真正隨機的(它們被稱爲僞隨機) - 它們的選擇基於預定的算法,它使用一個「種子值」可以選擇的數量。默認情況下,這是DateTime.Now.Ticks

您的應用程序運行速度如此之快,以致它對Random的每個實例使用相同的種子。您可以通過實例化對象隨機的循環之外解決這個問題:

Random rand = new Random(); 
do 
{ 
    //picks a die to display  
    number = rand.Next(1, 7); 

    picchoice = number.ToString(); 

    //select an image from the image selection method 
    picture = diepic(picture, picchoice); 

} 
while (picture == displaying); 

有關它的更多信息,請參閱「備註」部分在這裏:http://msdn.microsoft.com/en-us/library/ctssatww.aspx

相關問題