我遇到了一个奇怪的问题。当我运行以下代码时,我的每个文本框都填充了相同的随机生成的数字。
public void diceAdd()
{
int[] die = new int[4];
for(int i = 0; i < total.Length; i++)
{
for (int r = 0; r < die.Length; r++)
{
//Simulates rolling a 6 sided die
Random rand = new Random();
randomNumber = rand.Next(1, 7);
die[r] = randomNumber;
}
int smallest = die[0];
for (int c = 1; c < die.Length; ++c)
{
if (die[c] < smallest)
{
smallest = die[c];
}
}
total[i] = die[0] + die[1] + die[2] + die[3] - smallest;
}
strTxt.Text = total[0].ToString();
dexTxt.Text = total[1].ToString();
conTxt.Text = total[2].ToString();
intTxt.Text = total[3].ToString();
wisTxt.Text = total[4].ToString();
chaTxt.Text = total[5].ToString();
问题是,如果我添加此消息框
MessageBox.Show(i.ToString());
后
total[i] = die[0] + die[1] + die[2] + die[3] - smallest;
每个数字都按预期获得独特的输出。
我认为它与线程有关,但我想在弄乱之前我会问这里。