是否可以检查Random
类使用的种子?
我正在使用Random()类,然后Next(int,int)方法会生成一些整数以便以后计算。我需要程序每次运行不同的随机数,但我有时会遇到我想调查的错误。 是否有可能从Random类中获取种子,因此如果出现错误,我可以再次使用相同的种子并获得相同的随机生成的数字?
答案 0 :(得分:3)
我认为不应该检查出来,你应该用你想要的种子创建一个Random对象。
Random rnd1 = new Random(); // Different seed every run
Random rnd2 = new Random(1234); // Always generates the same numbers sequence
Random()构造函数使用系统时钟提供种子值。这是实例化随机数生成器的最常用方法。
检查 here 以获取更多信息。
答案 1 :(得分:0)
无法获取构造Random
的种子,因为该值未存储在构造函数之后。
有关详细信息,请参阅System.Random
的{{3}}。
您可以为System.Random
创建一个包装器,它会存储您使用它创建的种子,并使用该类。
class MyRandom : Random
{
public readonly int Seed;
public MyRandom(int seed) : base(seed)
{
Seed = seed;
}
}
答案 2 :(得分:0)
您是否尝试在Random实例上使用反射?
否则,您可以使用包装器来存储种子值,甚至可以使用包装器来创建具有种子值的文件。当测试整个过程时,再次从文件中加载种子以产生相同的伪随机值。