for (int i=0;i<20;i++)            {
                Random rd = new Random();
                qqnumber=rd.Next(1000,10000).ToString();
                qqname=qqnumber+"名字";  
                if(qqdate.ContainsKey(qqnumber))
                {
                   i--;
                }
                else
                qqdate.Add(qqnumber,qqname);
            }
               Console.WriteLine("一共有{0}条数据",qqdate.Count);
这句
Random rd = new Random();放在FOR里面跟FOR的外面的结果为什么不一样;放在里面直接运行结果是1,在FOR里设断点调试的结果是20。不知道为什么?

解决方案 »

  1.   

    Random 伪随机数,  默认构造 以当前时间为seed 生成随机数
    循环太快了 瞬间完成 所以 可以看成 seed 相等,, 如果相等的话 生成的 随机数是一样的。next 就换了你放循环里面 每次都新random 同样种子的 第一个随机数,  都一样
      

  2.   

    如果放在循环外面是不是每次NEXT他的结果都是不一样的,有没有可能出现同一结果
    Random rd = new Random(); 
    for (int i=0;i <20;i++) 
                { 
                   qqnumber=rd.Next(1000,10000).ToString(); 
                }
    qqnumber 20次的值是不是都是不一样的,还是说也是随机的