2014-10-18 113 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