当你创建一个.net Random没有参数的对象时,你会得到,正如文档所说:
使用与时间相关的默认种子值初始化Random类的新实例.
另一方面,您可以指定种子.
System.Random rand1 = new System.Random();
System.Random rand2 = new System.Random(222);
Run Code Online (Sandbox Code Playgroud)
因为rand2种子是众所周知的.我怎样才能找到种子,rand1以便在不同的时间点获得相同的结果?
Random类的默认构造函数使用Environment.TickCount作为种子.虽然您可以在技术上自己使用该属性来了解种子,但它不能100.00%可靠,因为它在两个语句之间变化的可能性非常小.
你必须这样做,所以它总是安全的:
int seed = Environment.TickCount;
System.Random rand1 = new System.Random(seed);
Run Code Online (Sandbox Code Playgroud)