.net随机生成器是如何实现的?

我指的是.net / c#中的标准(?)随机生成器

Random random = new Random(seed); random.next(); 

我知道文献中有数十种或数百种方法,但我无法找出.net框架目前使用哪种方法?

提问的原因:如果我绘制了很多随机变量,我是否会返回相同的序列。 我知道一些RNG有这种不良特性。

从有限的数字集合中以相等的概率选择伪随机数。 所选择的数字不是完全随机的,因为使用确定的数学算法来选择它们,但是出于实际目的它们是足够随机的。 Random类的当前实现基于Donald E. Knuth的减法随机数生成器算法的修改版本。 有关更多信息,请参阅DE Knuth。 “计算机编程的艺术,第2卷:研究数学算法”。 Addison-Wesley,Reading,MA,第二版,1981。

http://msdn.microsoft.com/en-us/library/system.random.aspx

所有计算均基于种子。 如果您定义种子,那么对于相同的方法序列,您将获得相同的结果。 如果不是,那么默认种子是Environment.TickCount,因此相同的方法序列将在每次运行时生成不同的结果(不保证在并行中)。