各位大虾帮帮忙,下面为一段在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>");
}
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>");
}
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>");
}
我就是想获得从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);
}
}
}
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/>");
}
}
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;
}
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>");
}