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

Adr*_*ian 1 .net random

当你创建一个.net Random没有参数的对象时,你会得到,正如文档所说:

使用与时间相关的默认种子值初始化Random类的新实例.

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

System.Random rand1 = new System.Random();
System.Random rand2 = new System.Random(222);
Run Code Online (Sandbox Code Playgroud)

因为rand2种子是众所周知的.我怎样才能找到种子,rand1以便在不同的时间点获得相同的结果?

Han*_*ant 6

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

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

int seed = Environment.TickCount;
System.Random rand1 = new System.Random(seed);
Run Code Online (Sandbox Code Playgroud)