C#随机数 出现同一个数?C#随机数声明放在for循环里总是出现同一个数,把Random R=new Random() 放在FOR循环外面 就可以了生成不同的随机数 是怎么回事?代码如下

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 17:55:59

C#随机数 出现同一个数?C#随机数声明放在for循环里总是出现同一个数,把Random R=new Random() 放在FOR循环外面 就可以了生成不同的随机数 是怎么回事?代码如下
C#随机数 出现同一个数?
C#随机数声明放在for循环里总是出现同一个数,把Random R=new Random() 放在FOR循环外面 就可以了生成不同的随机数  是怎么回事?代码如下

C#随机数 出现同一个数?C#随机数声明放在for循环里总是出现同一个数,把Random R=new Random() 放在FOR循环外面 就可以了生成不同的随机数 是怎么回事?代码如下
编程中的随机数一般指的是伪随机数,会根据初始“种子”(Random Seed)和特定的迭代算法来得到随机数.

比如初始化种子是 20,规定算法是乘以 10 后对 7 取模,那么 random.Next() 第一次得到 20*10%7=4、第二次等到 4*10%7=5、第三次得到 5*10%7=1、第四次得到 1*10%7=3……得到的这些数在人们看来就已经是随机的了,但实际上它们并非真的随机了,因为当种子一定、算法一定的条件下,得到的每个数永远是这个顺序.

所以关键点就在于如何确定种子和迭代算法.算法一般由语言内部的类库自己规定好,编程者只需要传入种子就可以得到一系列的伪随机数了.

C# 里的 Random 类有个重载的构造函数,有一个参数代表种子;如果不规定这个种子,那么默认以当前的 DateTime 为种子.那么问题就来了,要知道今天的计算机CPU运算速度是非常快的,如果你在 for 循环里重复定义一个新的 Random 类,很可能当前的种子(DateTime)还没来得及发生变化,这样你 random.Next() 得到的第一个随机数永远是固定的.

这样解释题主明白否?