Board logo

标题: c#生成随机数(2) [打印本页]

作者: look_w    时间: 2019-4-16 19:41     标题: c#生成随机数(2)

方法2:利用Hashtable。[NextPage]

 

     Hashtable hashtable = new Hashtable();
      Random rm = new Random();
      int RmNum = 10;
      for (int i = 0; hashtable.Count < RmNum; i++)
      {
          int nValue = rm.Next(100);
          if (!hashtable.ContainsValue(nValue) && nValue != 0)
          {
           hashtable.Add(nValue, nValue);
           Console.WriteLine(nValue.ToString());
          }
      }


  方法3:递归,用它来检测生成的随机数是否有重复,如果取出来的数字和已取得的数字有重复就重新随机获取。



     Random ra=new Random(unchecked((int)DateTime.Now.Ticks));
      int[] arrNum=new int[10];
      int tmp=0;
      int minValue=1;
      int maxValue=100;
      for (int i=0;i<10;i++)
      {
        tmp=ra.Next(minValue,maxValue); //随机取数
        arrNum=getNum(arrNum,tmp,minValue,maxValue,ra); //取出值赋到数组中
      }
      .........
      .........
      public int getNum(int[] arrNum,int tmp,int minValue,int maxValue,Random ra)
      {
        int n=0;
        while (n<=arrNum.Length-1)
        {
          if (arrNum[n]==tmp) //利用循环判断是否有重复
          {
            tmp=ra.Next(minValue,maxValue); //重新随机获取。
            getNum(arrNum,tmp,minValue,maxValue,ra);//递归:如果取出来的数字和已取得的数字有重复就重新随机获取。
          }
        n++;
        }
        return tmp;
      }




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0