public string RandomNum(int n) //
{
string strchar = "0,1,2,3,4,5,6,7,8,9" ;
string[] VcArray = strchar.Split(',') ;
string  VNum = "" ;//由于字符串很短,就不用StringBuilder了
int temp = -1 ;    //记录上次随机数值,尽量避免产生几个一样的随机数
//采用一个简单的算法以保证生成随机数的不同
Random rand =new Random();
for ( int i = 1 ; i < n+1 ; i++ ) 
{    
  if ( temp != -1) 
  {
   rand =new Random(i*temp*unchecked((int)DateTime.Now.Ticks));
  }    
  //int t =  rand.Next(35) ;
  int t=rand.Next(10);
  if (temp != -1 && temp == t) 
  {
   return RndNum( n);
  }
  temp = t  ;
  VNum += VcArray[t];
  }
return VNum ;//返回生成的随机数
}
问题:为什么要用int temp = -1;我用temp=1或其它的值可以么?

解决方案 »

  1.   

     temp = t ;
      VNum += VcArray[t];
    还有最后这两句是什么意思?是不是当if不满足时。
      

  2.   

    Random ran = new Random(DateTime.Now.Millisecond); 
    防止重复
    VNum 记录随机数
      

  3.   

    如上所说, temp = t; VcArray[t]; VcArray[Index是从0开始的]...
      

  4.   

    才接触这个东西。我要网上查到最简单生成随机验证数.我刚才跟踪了一下,发现
    if (temp != -1 && temp == t)  
      {
      return RndNum( n);
      }
    这里好像并不会执行这一句,于是我就把这句删除,发现还是可以的!
    有点搞不明白
      

  5.   

    for (int i = 0; i < 10; i++)
                {
                    Random rand = new Random(Guid.NewGuid().GetHashCode());
                    Console.WriteLine(rand.Next(1, 10000));
                }用Guid做种子 ,重复几率很低
      

  6.   


                //生成n个不重复的随机数
                int VSUM = 10; //要产生多少个随机数
                int VMax = 1000; //随机数的上限
                List<int> RandNumber = new List<int>();
                for (int i = 0; i < VSUM; i++)
                {
                    Random rand = new Random(Guid.NewGuid().GetHashCode());
                    int num = rand.Next(0, VMax);
                    if (RandNumber.IndexOf(num) < 0)
                    {
                        RandNumber.Add(num);
                    }
                    else
                    {
                        i--;
                    }
                }            foreach (int num in RandNumber)
                {
                    Console.WriteLine(num);
                }