c#通过两个for循环,random和数组产生随机数,代码有bug,求看错误

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,才够填充满数组,不然按上面改了后,会死循环