各位大虾帮帮忙,下面为一段在0到6之间产生5个不同随机数的程序,出现的问题是当产生一个与前面数字相同的数字时,后面的数字就统统为零了;
int[] size=new int[5];
int rndno1;
bool flag1=true;
bool flag2=true;
Random r = new Random();
for(int n=0;n<5;n++)
{
rndno1 = r.Next(6);
if(flag1==true)
{
size[0]=rndno1;
flag1=false;
}
else
{
int i=0;
while(i<n)
{
if(rndno1==size[i])
{
flag2=false;
  n--;
break;
}
i++;
}
if(flag2==true)
{
size[n]=rndno1;
flag2=true;
}
}
} for(int j=0;j<5;j++)
{
Response.Write(size[j]); 
Response.Write("<br>"); 
}

解决方案 »

  1.   

    string[] size=new string[5];
    char[] s = new char[]{'0','1', '2','3','4','5','6'};
    Random r = new Random();
    /*int rndno1;
    bool flag1=true;
    bool flag2=true;
    Random r = new Random();
    for(int n=0;n<5;n++)
    {
    rndno1 = r.Next(6);
    if(flag1==true)
    {
    size[0]=rndno1;
    flag1=false;
    }
    else
    {
    int i=0;
    while(i<n)
    {
    if(rndno1==size[i])
    {
    flag2=false;
    n--;
    break;
    }
    i++;
    }
    if(flag2==true)
    {
    size[n]=rndno1;
    flag2=true;
    }
    }
    }*/ for(int j=0;j<5;j++)
    {
    size[j]=s[r.Next(0, s.Length)].ToString();
    Response.Write(size[j]); 
    Response.Write("<br>"); 
    }
      

  2.   

    回xiahouwen(武眉博<活靶子.NET>) :
        我就是想获得从0到m(m确定)中的n(n确定)个不同的随机数,同时将这n个不同的随机数放在一个数组里!
      

  3.   

    谢谢你hifool(叮当当),你能不能具体点啊
      

  4.   

    获得从0到m(m确定)中的n(n确定)个不同的随机数,同时将这n个不同的随机数放在一个数组里!
    相信能满足你的需要了。
                int[] number =new int[n];
                Random rnd = new Random();
                for (int i = 0; i < n; i++)
                {
                    number[i]= rnd.Next(10);
                    //判断生成的数字不与过去的重复
                    string strNumber = "";
                    for (int j = 0; j < i; j++)
                    {
                        strNumber += number[j];
                        while (strNumber.IndexOf(number[i].ToString()) >= 0)
                        {
                            number[i] = rnd.Next(m);
                        }
                    }
                }
      

  5.   

    以下代码经过测试
    public string[] GetNumber(int m , int n)
    {
    string[] array = new string[n];
    Random r = new Random();
    for(int i=0; i< n;i++)
    {
    array[i] = r.Next(0,m).ToString();
    } return array;
    } private void Button1_Click(object sender, System.EventArgs e)
    {
    string[]   xx = GetNumber(5,5);
    for(int i=0 ; i< xx.Length; i++)
    {
    Response.Write(xx[i]);
    Response.Write("<br/>");
    }
    }
      

  6.   

    不重复版本
    public string[] GetNumber(int m , int n)
    {
    if(m<n)
    {
    throw new ArgumentException("m必须大于n");
    }
    string[] array = new string[n];
    Random r = new Random();
    for(int i=0; i< n;i++)
    {
    int iTemp = r.Next(0,m);
    while(Array.IndexOf(array,iTemp.ToString()) > -1)
    {
    iTemp = r.Next(0,m);
    }
    array[i] = iTemp.ToString();
    } return array;
    }
      

  7.   

    int[] size=new int[5];
    int rndno1;
    string str="";
    Random r = new Random();
    for(int n=0;n<5;n++)
    {
    rndno1=r.Next(0,6);
    while(str.IndexOf(rndno1.ToString())>-1)
    {
    rndno1=r.Next(0,6);
    }
    str+=rndno1.ToString();
    size[n]=rndno1;
    }

    for(int j=0;j<5;j++)
    {
    Response.Write(size[j]); 
    Response.Write("<br>"); 
    }