随机数

 public string GetChar(int count)
        {
            string  ch = "0123456789abcdefghijklmnopqrstuvwxyz" ;
            char [] sch = ch.ToCharArray();
            string s = "";
            Random ra = new Random();
            for (int i = 0; i < count; i++)
            {

                   //  Random ra = new Random();

                int rad = ra.Next(0, ch.Length - 1);
                s += sch[rad ];;
            }
            return s;
          
        }

       问题; 如果把new放在for循环里面 则产生的随机数一样,外面则不一样

       原因;随机数的生成是从种子值开始。 如果反复使用同一个种子,就会生成相同的数字系列。 产生不同序列的一种方法是使种子值与时间相关,从而对于 Random 的每个新实例,都会产生不同的系列。 默认情况下,Random 类的无参数构造函数使用系统时钟生成其种子值,而参数化构造函数可根据当前时间的计时周期数采用 Int32 值。 但是,因为时钟的分辨率有限,所以,如果使用无参数构造函数连续创建不同的 Random 对象,就会创建生成相同随机数序列的随机数生成器。

 

posted @ 2011-09-22 16:26  Carlyle  阅读(174)  评论(0)    收藏  举报