我要得到一组0--99之间的随机数,重复没有问题
但是我用random函数的时候
for (int i = 0; i < 200; i++ )
            {                Random ran = new Random();
                rdate[i].Datatype = ran.Next(0, 99);
}
得到的全部都是一样的网上查了下是种子的问题,不太明白,请高手指教,谢谢在线等,一有正确答案立刻结贴

解决方案 »

  1.   

    .Net中关于Random类产生的随机数相同问题
      

  2.   

    真正的随机事件(在它存在的范围内),只发生在特定的几个未知的自然界现象中,比如放射性衰变.计算机只能产生模拟的随机事件,并且计算机产生的"随机"数因此只能称为伪随机数.计算机产生的伪随机数序列用的种子可以被看成是一种标识标签.也理解为一个初始变量循环中,由于速度太快,C#默认的随机数函数有些问题,所以需要Random ra = new Random((unchecked((int)DateTime.Now.Ticks + i)));这么写以后,每次初始变量都变了,自然随机数也会变了Ticks是一个很大的长整数,单位是 100 毫微秒。表示自 0001 年 1 月 1 日午夜 12:00:00 以来已经过的时间的以 100 毫微秒为间隔的间隔数。
      

  3.   

    Random ran = new Random();你把它放在了for循环里,这是问题所在!
    把它的声明提到全局
      

  4.   

    new Random()放在for循环外面
    Random random = new Random();
    for (int i = 0; i < 200; i++){
        number = random.Next();
        rdate[i].Datatype = number%100;
    }