当您创建一个没有参数的.net
Random
对象时,您会得到as the docs put it:
使用时间依赖性初始化Random类的新实例 默认种子值。
另一方面,您可以指定种子。
System.Random rand1 = new System.Random();
System.Random rand2 = new System.Random(222);
对于rand2
,种子是已知的。我怎样才能找到rand1
的种子,以便在不同的时间点获得相同的结果?
答案 0 :(得分:6)
Random类的default constructor使用Environment.TickCount作为种子。虽然您可以在技术上自己使用该属性来了解种子,但它不能100.00%可靠,因为它在两个语句之间变化的可能性非常小。
你必须这样做,所以它总是安全的:
int seed = Environment.TickCount;
System.Random rand1 = new System.Random(seed);