我指的是.net / c#
中的标准(?)随机生成器Random random = new Random(seed);
random.next();
我知道文献中有数十种或数百种方法,但我无法找出.net框架目前使用哪种方法?
提出问题的原因:如果我绘制了很多随机变量,我是否会返回相同的序列。我知道一些RNG有这种不良特性。
答案 0 :(得分:11)
从有限的概率中选择具有相等概率的伪随机数 一组数字。所选数字并非完全随机,因为a 确定的数学算法用于选择它们,但它们是 实际上足够随机。 当前的实施 Random类的基于Donald E.的修改版本 Knuth的减法随机数生成器算法。更多 有关信息,请参阅D. E. Knuth。 “计算机程序设计的艺术,卷 2:数值算法“.Addison-Wesley,Reading,MA,second 版,1981。
答案 1 :(得分:1)
所有计算都基于种子。如果您定义种子,那么对于相同的方法序列,您将获得相同的结果。如果没有,则默认种子是Environment.TickCount,因此相同的方法序列将在每次运行时生成不同的结果(不保证在并行中)。