日期:2014-05-18  浏览次数:20842 次

求解循环输出的内容为什么总是一样呢
C# code

namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            //测试产生的验证码
            Program checking= new Program();
            for (int i = 0; i < 3; i++)
            {
               
                string str= checking.run(4);
                Console.WriteLine(asd);
            }
            Console.Read();

        }
        /// <summary>
        /// 生成验证码
        /// </summary>
        /// <param name="checkingLength">产生验证码的长度</param>
        /// <returns>最后生成的验证码</returns>
        public string run(int checkingLength )
        {
            //出现的随机数
            string str = "1,2,3,4,5,6,7,8,9,0,A,a,B,b,C,c,D,d,E,e,F,f,G,g,H,h,I,i,J,j,K,k,L,l,M,m,N,n,O,o,P,p,Q,q,R,r,S,s,T,t,U,u,V,v,W,w,X,x,Y,y,Z,z";
            //最后返回的验证码
            string checkng = "";
            Random ran = new Random();
            //接收随机码的数组
            string[] stringArry = str.Split(',');
            //随机数组的下标值
            int amout = 0;
            
            for (int i = 0; i < checkingLength; i++)
            {
                //产生验证码数组的下标
               int num = ran.Next(62);
                //判断数组下标是否相同
               if (num == amout)
               {
                   //下标值改变
                   amout += i;
                   //果如改变的下标值超过数组索引界限
                   if (amout > stringArry.Length)
                       //将其数组下标缩小
                       amout = amout - (num / 2);
               }
               else
               {
                   amout = num;
               }
                //拼接产生的验证码
                checkng += stringArry[amout];
            }
            return checkng;
        }
    }
}


这是我写的一个简单的验证码产生的算法,我想测试下产生的数据。结果显示的都一样,但是我打上断点输出的内容却不一样?很迷糊额,难道我这样测试不对嘛

------解决方案--------------------
随即数是以为种子的,如果运行太快,时间种子酒没变,产生相同的随即数.
添加这个命名空间using System.Threading;
然后在加上我标注颜色的一句;