c#通过两个for循环,random和数组产生随机数,代码有bug,求看错误
问题描述:
for (int i = 0; i < b; i++)
{
int r1 = r.Next(1, a + 1);
c[i] = r1;
for (int j = 0; j < i; j++)
{
if (c[j] == c[i])
{
int r2 = r.Next(1, a + 1);
c[i] = r2;
j--;
}
}
s = rTB_Strin.Text += "," + Convert.ToString(c[i]);
s1 = rTB_Strin2.Text += "+" + Convert.ToString(c[i]);
f = f + c[i];
}
答
代码修改如下:
for (int i = 0; i < b; i++)
{
int r1 = r.Next(1, a + 1);
c[i] = r1;
for(;;)
{
int istrue = 0;
for (int j = 0; j < i; j++)
{
if(c[j] == c[i])
{
int r2 = r.Next(1, a + 1);
c[i] = r2;
istrue = 1;
break;
}
}
if(istrue ==0)
break;
}
s = rTB_Strin.Text += "," + Convert.ToString(c[i]);
s1 = rTB_Strin2.Text += "+" + Convert.ToString(c[i]);
f = f + c[i];
}
答
里面的循环中,判断到与之前的值重复后,不应该用j--,而应该用J=-1,这样才能重新遍历一次,否则也有可能重复。
其他的问题不知道你定义的变量,只是你的b应该是数组c的数量。那么必须a>=b,才够填充满数组,不然按上面改了后,会死循环