如何在创建Random对象时找出种子是什么?

时间:2016-06-17 11:15:05

标签: .net random

当您创建一个没有参数的.net Random对象时,您会得到as the docs put it

  

使用时间依赖性初始化Random类的新实例   默认种子值。

另一方面,您可以指定种子。

System.Random rand1 = new System.Random();
System.Random rand2 = new System.Random(222);

对于rand2,种子是已知的。我怎样才能找到rand1的种子,以便在不同的时间点获得相同的结果?

1 个答案:

答案 0 :(得分:6)

Random类的default constructor使用Environment.TickCount作为种子。虽然您可以在技术上自己使用该属性来了解种子,但它不能100.00%可靠,因为它在两个语句之间变化的可能性非常小。

你必须这样做,所以它总是安全的:

int seed = Environment.TickCount;
System.Random rand1 = new System.Random(seed);