我写了个生成12位字符串的函数,生成的字符串前四位是字母组成,后8位是数字组成当我在此基础上生成10个不同的字符串的时候.我这样做的,用FOR循环读取10次这个函数但是每次生成的字符串都是一样的,这个问题一直让我头疼,请各位指点迷津~~

解决方案 »

  1.   

     int number;
            char code;
            string checkCode = String.Empty;        System.Random random = new Random();
            for (int j = 0; j < 4; j++)
            {
                number = random.Next();
                if (number % 2 != 0)
                {
                    code = (char)('A' + (char)(number % 26));
                    checkCode += code.ToString();
                }
                else
                {
                    j--;
                }
            }
            for (int i = 0; i < 8; i++)
            {
                number = random.Next();            if (number % 2 == 0)
                {
                    code = (char)('0' + (char)(number % 10));
                    checkCode += code.ToString();
                }
                else
                {
                    i--;
                }
            }        Response.Write(checkCode.ToString());
      

  2.   

    public static string rc()
        {
            char[] arrchar = 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','V','W','X','Y','Z'
           };
            StringBuilder num = new StringBuilder();
            Random rnd = new Random(DateTime.Now.Millisecond);
            for (int i = 1; i <= 4; i++)
            {
                //num2.Append(arrchar[rnd.Next(0,10)].ToString());
                //num.Append(arrchar[rnd.Next(0, 10)].ToString());
                num.Append(arrchar[rnd.Next(11, arrchar.Length)].ToString());
            }
            for (int j = 1; j <= 8; j++)
            {
                num.Append(arrchar[rnd.Next(0,10)].ToString());
            }
                return num.ToString();
        }
      

  3.   

    http://topic.csdn.net/u/20071225/16/60a0e08a-a096-4fce-a5d8-65346943b89c.html
      

  4.   


            private string getString(Random s,Random n)
            {
                string strString = "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 strNumber = "0,1,2,3,4,5,6,7,8,9";
                string strStr = null;
                string strNum = null;
                string strTemp = null;
                int k;
                string[] strs = strString.Split(',');
                string[] strn = strNumber.Split(',');
                for (int i = 0;; i++)
                {
                    k = s.Next(26);
                    strTemp = strs[k].ToString();
                    if (strTemp == "*")
                        continue;
                    strs[k] = "*";
                        strStr += strTemp;
                    if (strStr.Length == 4)
                        break;
                }
                for (int i = 0; ; i++)
                {
                    k = n.Next(10);
                    strTemp = strn[k].ToString();
                    if (strTemp == "*")
                        continue;
                    else
                        strn[k] = "*";
                        strNum += strTemp;
                    if (strNum.Length == 8)
                        break;
                }            return strStr + strNum;
            }        private void getStr()
            {
                Random rand1 = new Random();
                Random rand2 = new Random();
                for(int i=0;i<10;i++)
                {
                    Response.Write(getString(rand1,rand2)+"<br />");
                }
            }单个不包含重复,
      

  5.   

    private string   strString   =   {"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"}; 
    private string   strNumber   =   {"0',"1","2","3","4","5","6","7","8","9"}; 
    private Random rand = new Random();
    private ArrayList arr = new ArrayList(); //存放最后生成的10个字符串private string GetRandString()
    {
      string stringStr = string.Empty;
      for(int i = 0; i < 4; i++)
      {
        numStr += strString[rand.Next(26)];
      }
      return numStr;
    }private string GetRandNumber()
    {
      string numStr = string.Empty;
      for(int i = 0; i < 8; i++)
      {
        numStr += strNumber[rand.Next(10)];
      }
      return numStr;
    }private string GetDemandString()
    {
      return GetRandString()+GetRandNumber();
    }private void GetTenString()   //也可以直接返回一个集合对象
    {
      string temp = string.Empty;
      for(int i=0; i<10; i++)
      {
        temp = GetDemandString();
        if(arr.Count < 1)
        {
           arr.Add(temp);
        }
        else
        {
          while(arr.Contains(temp))
          {
            temp = GetDemandString();
          }
          arr.Add(temp);
        }
      }
    }
      

  6.   

    不好意思, GetRandString() 中的numStr 应改为stringStr