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

时间:2012-06-24 18:44:09

标签: c# .net

我指的是.net / c#

中的标准(?)随机生成器
Random random = new Random(seed);
random.next();

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

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

2 个答案:

答案 0 :(得分:11)

  

从有限的概率中选择具有相等概率的伪随机数   一组数字。所选数字并非完全随机,因为a   确定的数学算法用于选择它们,但它们是   实际上足够随机。 当前的实施   Random类的基于Donald E.的修改版本   Knuth的减法随机数生成器算法。更多   有关信息,请参阅D. E. Knuth。 “计算机程序设计的艺术,卷   2:数值算法“.Addison-Wesley,Reading,MA,second   版,1981。

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

答案 1 :(得分:1)

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