我有按钮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 :(得分: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;