C#随机函数

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中

posted @ 2009-08-18 14:49  oraclejava  阅读(853)  评论(0)    收藏  举报