我试图使用Random.net使用VB.net生成一组10个随机数.
For i As Integer = 0 To 10
Console.WriteLine("Random {0}: {1}", i, (New Random).Next(1, 100))
Next
Run Code Online (Sandbox Code Playgroud)
此代码迭代10次,每次使用随机类的新实例生成1到100之间的整数,并将其输出到控制台.
但是,结果肯定不是随机的:

值得注意的是,每次运行子程序时,数字34都会改变.
为什么是这样?是因为我在每次迭代时都在创建一个随机类的新实例吗?如果是这样,为什么会导致问题呢?
小智 5
我认为MSDN文档描述了为什么这种情况发生得相当好.http://msdn.microsoft.com/en-us/library/system.random(v=vs.110).aspx
默认情况下,Random类的无参数构造函数使用系统时钟生成其种子值,而其参数化构造函数可以根据当前时间中的滴答数采用Int32值.但是,由于时钟具有有限的分辨率,因此使用无参数构造函数以紧密连续的方式创建不同的随机对象会创建随机数生成器,从而生成相同的随机数序列.以下示例说明了紧密连续实例化的两个Random对象生成相同的随机数序列.