7

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

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

我知道文献中有数十种或数百种方法,但我找不到.net框架目前使用的是哪一种?

问问题的原因:如果我画了很多随机变量,我会回到同一个序列吗?我知道一些 RNG 具有这种不良属性。

4

2 回答 2

11

从一组有限的数字中以相等的概率选择伪随机数。选择的数字不是完全随机的,因为使用了明确的数学算法来选择它们,但它们对于实际目的来说是足够随机的。Random 类的当前实现基于 Donald E. Knuth 的减法随机数生成器算法的修改版本。有关详细信息,请参阅 DE Knuth。“计算机编程的艺术,第 2 卷:半数值算法”。Addison-Wesley,马萨诸塞州雷丁,第二版,1981 年。

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

于 2012-06-24T18:50:14.157 回答
1

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

于 2012-06-24T18:52:45.950 回答