各位高手,如何生成8位无重复的随机数(数字+字母)啊~希望给出代码。谢了~

解决方案 »

  1.   

    public string ran2()
    {
    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,v,w,x,y,z";
    string[] sz=s.Split(',');
    System.Collections.ArrayList al=new ArrayList();
    for(int i=0;i<8;i++)
    {
    if(al.Count==0)
    {
    System.Random rd=new Random();
    int a=rd.Next(0,35);
    al.Add(a);
    }
    else
    {
    int c=0;
    bool isonly=true;

    while(isonly)
    {
        System.Random rd=new Random();
        int b=rd.Next(0,25);
        if(this.isone(al,b))
        {
    isonly=false;
    c=b;     }
    }
    al.Add(c);
    }
    }
    string rand="";
    for(int j=0;j<al.Count;j++)
    {

         rand+=sz[Int32.Parse(al[j].ToString())];

    }
    return rand;
    }
    下面还有一个判断唯一的函数
    private bool isone(System.Collections.ArrayList a,int b)
    {
    bool one=true;
    for(int i=0;i<a.Count;i++)
    {
    if(a[i].ToString()==b.ToString())
    {
    one=false;
    i=a.Count;
    }
    }
    return one;
    }
      

  2.   

    int b=rd.Next(0,25);
    这为什么是25,新手,不明白....
      

  3.   

    不是16进制的,就是生成一串8位随机的字符串,这串字符是由数字+字母组成的。
    buyi2004(buyi) :我先试试你的方法吧~大伙谁还有好方法啊~
      

  4.   

    一个个来嘛  先 random 一个出来,标记为a1  在随机 不等就标记为a2 继续啊
      

  5.   

    private string CreateRandomCode(int codeCount)
            {
                char[] allCharArray = new char[] {'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 s = "";
                int temp = -1;            Random rand = new Random();
                for(int i = 0; i < codeCount; i++)
                {
                    if(temp != -1)
                    {
                        rand = new Random(i*temp*((int)DateTime.Now.Ticks));
                    }
                    int t = rand.Next(allCharArray.Length);
                    if(temp == t)
                    {
                        return CreateRandomCode(codeCount);
                    }
                    temp = t;
                    randomCode += allCharArray[t];
                }
                string hash = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(randomCode,"md5");
                Response.Cookies.Add(new HttpCookie("ValidateCode", hash));
                return randomCode;
            }
      

  6.   

    以上用于生成验证码的,传入位数
    倒数第二第三句用于加密后放入Cookie
    楼主不需要可以去掉
      

  7.   

    哦,我这个不要求唯一
    sorry
    楼主还是用1楼的吧
      

  8.   

    我也来凑个热闹~~~Public Function RandomPasswd() As String        Dim strPasswd As String
            Dim intNum As Integer = 0
            Dim objRandom As Random
            Dim intLength As Integer        objRandom = New Random
            intLength = objRandom.Next(5) + 8
            For i As Integer = 0 To intLength - 1
                intNum = objRandom.Next(3)
                If intNum = 0 Then
                    strPasswd += Chr(objRandom.Next(10) + 48).ToString()
                ElseIf intNum = 1 Then
                    strPasswd += Chr(objRandom.Next(26) + 65).ToString()
                Else
                    strPasswd += Chr(objRandom.Next(26) + 97).ToString()
                End If
            Next        Return strPasswd
        End Function
      

  9.   

    这是完整的你只要进去改改数字就可以生成8位的了:希望对你有用!
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;using System.Drawing.Imaging;
    using System.Drawing;
    using System.IO;public partial class UserControls_Gif : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string tmp = RndNum(5).ToUpper();
            this.Session["ImageV"] = tmp;
            HttpCookie a = new HttpCookie("ImageV", tmp);
            Response.Cookies.Add(a);
            this.CreateCheckCodeImage(tmp);     }    private void ValidateCode(string VNum)
        {
            Bitmap Img = null;
            Graphics g = null;
            MemoryStream ms = null;        int gheight = VNum.Length * 15;
            Img = new Bitmap(gheight, 30);
            g = Graphics.FromImage(Img);
            //背景颜色 
            g.Clear(Color.White);
            //文字字体 
            Font f = new Font("Arial Black", 11);
            //文字颜色 
            SolidBrush s = new SolidBrush(Color.Black);
            g.DrawString(VNum, f, s, 3, 3);
            ms = new MemoryStream();
            Img.Save(ms, ImageFormat.Jpeg);
            Response.ClearContent();
            Response.ContentType = "image/Jpeg";
            Response.BinaryWrite(ms.ToArray());        g.Dispose();
            Img.Dispose();
            Response.End();
        }    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;
        } 
        private void CreateCheckCodeImage(string checkCode)
      {
       if(checkCode == null || checkCode.Trim() == String.Empty)
        return;   System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 15.5)), 30);
       Graphics g = Graphics.FromImage(image);   try
       {
        //生成随机生成器    Random random = new Random();    //清空图片背景色    g.Clear(Color.White);    //画图片的背景噪音线    for(int i=0; i<25; i++)
        {
         int x1 = random.Next(image.Width);
         int x2 = random.Next(image.Width);
         int y1 = random.Next(image.Height);
         int y2 = random.Next(image.Height);     g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
        }    Font font = new System.Drawing.Font("Arial", 14, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));
        System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true);
        g.DrawString(checkCode, font, brush, 2, 2);    //画图片的前景噪音点    for(int i=0; i<100; i++)
        {
         int x = random.Next(image.Width);
         int y = random.Next(image.Height);     image.SetPixel(x, y, Color.FromArgb(random.Next()));
        }    //画图片的边框线    g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);    System.IO.MemoryStream ms = new System.IO.MemoryStream();
        image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
        Response.ClearContent();
        Response.ContentType = "image/Gif";
        Response.BinaryWrite(ms.ToArray());
       }
       finally
       {
        g.Dispose();
        image.Dispose();
       }
      }
     }
      

  10.   

    //生成指定长度的随机字符串
    static public string GenerateRandomString(int length)
    {
    string s = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    string reValue = string.Empty;
    Random rnd = new Random(DateTime.Now.Millisecond);
    while( reValue.Length < length )
    {
    string s1=s[rnd.Next(0,s.Length)].ToString();
    if( reValue.IndexOf(s1)==-1 ) reValue += s1;
    }
    return reValue;
    }
      

  11.   

    http://www.cnblogs.com/jerryhu/archive/2006/08/11/474347.html
      

  12.   

    string str= "";   
    string[] arr={ "0","1", "2","3","4","5","6","7","8","9", "a","b","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};   
                Random rd=new Random();   
    while(str.Length<8)   
    {   
    String temp=arr[rd.Next(0,35)];   
    if (str.IndexOf(temp) == -1)   
    {   
    str  +=temp;   
    }   
    }   
    Console.WriteLine(str);
      

  13.   

    buyi2004(buyi) 實現了每個字符串字符的不重復,短時間也和以前的隨機數也不重復。如果在加上kongwei521(蝶恋花雨)的圖片顯示就很完美了。