2014-10-18 59 views
1

我有按鈕1-2-3 ... 12,我想隨機得到其中4個(不重複),然後給他們一個單一的顏色,例如紅色。我怎樣才能做到這一點?獲取隨機按鈕

public Form1() 
    { 
     InitializeComponent(); 

     Button[] LeftArr = new Button[12] { button1, button2, button3, button4, button5, button6, button7, button8, button9, button10, button11, button12 }; 

     int i = 0; 
     for (i = 0; i <= LeftArr.Length; i++) 
     { 
      Random rnd = new Random(); 
      Button ShipHere = rnd.Next(button1, button12); 

      // this is where i'm stuck 
     } 
+0

小問題,但是一旦你想得到不重複的「隨機」數字,它們就會變成非隨機的。真正的隨機數有重複的機會 – 2014-10-18 15:44:25

+0

我不想爭論隨機或不隨機的數字。我只需要從我的列表中的4個不同的按鈕,隨機得到.. – Shako 2014-10-18 15:47:55

回答

1

首先,您要確保在循環的每次迭代中都不要創建新的Random對象。否則,你將最終重複。

Random rnd = new Random(); 

List<Button> randomButtons = new List<Button>(4); 

for (int i = 0;i < 4;++i) 
{ 
    Button chosenButton; 

    // Keep looping until we get a button we haven't already picked 
    do 
    { 
     chosenButton = LeftArr[rnd.Next(0, LeftArr.Length)]; 
    } while (randomButtons.Contains(chosenButton)); 

    randomButtons.Add(chosenButton); 
} 

foreach (Button button in randomButtons) 
    button.BackColor = Color.Red; 
+0

非常感謝你的隊友,現在一切都很清楚。再次感謝你。 – Shako 2014-10-18 15:54:18