如何生成英文与数字混合的15位随机数呀!

解决方案 »

  1.   

    /// <summary>
    /// 随机类型
    /// </summary>
    public enum RndType
    {
    Char,Number,Both
    };
    /// <summary>
    /// 产生指定长度的随机字符串
    /// </summary>
    /// <param name="Len">字符串长度</param>
    /// <param name="type"></param>
    /// <returns>返回给定长度的随机字符串</returns>
    public static string RndStr(int Len,RndType type)
    {
    string s="0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,W,X,Y,Z";
    string[] Chars=s.Split(',');
    Random Rnd=new Random();
    int Start=0 ,End=0;
    switch(type)
    {
    case RndType.Char:
    Start=10;
    End=35;
    break;
    case RndType.Number:
    Start=0;
    End=9;
    break;
    case RndType.Both:
    Start=0;
    End=35;
    break;
    }
    s ="";
    for (int i=0;i<Len;i++)
    {
    s +=Chars[Rnd.Next(Start,End)];
    System.Threading.Thread.Sleep(5);//延时,避免重复
    }
    return s;
    }
      

  2.   

    大胆提一种方式,如果不怕重复的话,可以先生成随机数字,再用MD5或SAH加密,再取15位,同样是字母加数字。
      

  3.   

    private string RndNum(int VcodeNum)
      {
       string Vchar="0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p"+
        ",q,r,s,t,u,v,w,x,y,z";
       string[] VcArray=Vchar.Split(new Char [] {','});
       string VNum="";
       int temp=-1;   Random rand=new Random();
       
       for(int i=1;i<VcodeNum+1;i++)
       {
        if(temp!=-1)
        {
         rand=new Random(i*temp*unchecked((int)DateTime.Now.Ticks));
        }
       
        int t=rand.Next(35);
        if(temp!=-1&&temp==t)
        {
         return RndNum(VcodeNum);
        }
        temp=t;
        VNum+=VcArray[t];
       }
       return VNum;
      }