public int[] getRandomNum(int num,int minValue,int maxValue)
{
Random ra=new Random(unchecked((int)DateTime.Now.Ticks));
int[] arrNum=new int[num];
redo: int tmp=0;
for (int i=0;i<=num-1;i++)
{
tmp=ra.Next(minValue,maxValue);
arrNum[i]=getNum(arrNum,tmp,minValue,maxValue,ra);
}
//下面的for也是循环用来判断是否有重复的数没有!
//是我自己加的如果没有这几句在要产生数太多时有重复的!
//比如你从1到10中产生8个以上的不重复随机数是有重复的!
//要是你想要10个,理论上应该是全抽出来才对!结果可能陷入死循环
//很郁闷就加了这几句,很奏效!
for(int m=0;m<arrNum.Length;m++)
for(int n=m+1;n<arrNum.Length;n++)
{
if(arrNum[m]==arrNum[n])
goto redo;
}
return arrNum;
}
public int getNum(int[] arrNum,int tmp,int minValue,int maxValue,Random ra)
{
//Random ra=new Random(unchecked((int)DateTime.Now.Ticks));
for(int n=0;n<=arrNum.Length-1;n++)
{ if (arrNum[n]==tmp)
{
tmp=ra.Next(minValue,maxValue);
getNum(arrNum,tmp,minValue,maxValue,ra);
}
}
return tmp;
}
以上函数getRandomNum随机产生不重复的数并返回一个数组,第一个参数是产生几个随机数,剩下的是随机数的范围! getNum函数用来判断有重复的随机数,该函数是递归调用,直到没有重复递归结束!返回到getRandomNum函数继续生成下一个随机数!如何用! int [] a;
//声明一个数组一会用来接收返回的随机数 a=getRandomNum(4,1,10);//从1-10中产生4个不一样的数装入数组a中