检查Random类使用的种子

时间:2014-11-09 11:31:56

标签: c# .net random random-seed

是否可以检查Random类使用的种子?

我正在使用Random()类,然后Next(int,int)方法会生成一些整数以便以后计算。我需要程序每次运行不同的随机数,但我有时会遇到我想调查的错误。 是否有可能从Random类中获取种子,因此如果出现错误,我可以再次使用相同的种子并获得相同的随机生成的数字?

3 个答案:

答案 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实例上使用反射?

否则,您可以使用包装器来存储种子值,甚至可以使用包装器来创建具有种子值的文件。当测试整个过程时,再次从文件中加载种子以产生相同的伪随机值。

相关问题