gpt4 book ai didi

c# - 为 "Random"的不同实例创建不同的种子

转载 作者:可可西里 更新时间:2023-11-01 08:26:00 25 4
gpt4 key购买 nike

人们通常会问为什么他们在使用 Random 时总是得到相同的数字。在他们的例子中,他们每次都无意中创建了一个 Random 的新实例(而不是只使用一个实例),这当然会导致始终出现相同的数字。但就我而言,我确实需要 Random 的多个实例,它们返回不同的数字流。

在我看来,使用硬编码种子不是一个好主意,因为您在重新启动程序后会一次又一次地获得相同的值。这个怎么样:

int seed1 = (int)DateTime.Now.Ticks - 13489565;
int seed2 = (int)DateTime.Now.Ticks - 5564;

我知道这看起来很愚蠢和天真,但它会在每次重启后避免相同的值,并且两个种子应该不同。或者也许

Random helper = new Random();
int seed1 = helper.Next(1, int.MaxValue);
int seed2 = helper.Next(1, int.MaxValue);

如您所见,我在这里有点缺乏创造力,需要您的帮助。谢谢。

最佳答案

Jon Skeet 建议使用辅助 Random 对象和锁来创建 Random 对象工厂。例如:

    public static Random NewRandom() 
{
lock (globalLock)
{
return new Random(secondaryRandom.Next());
}
}

Take a look at the complete source code in Jon Skeet's blog.

关于c# - 为 "Random"的不同实例创建不同的种子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13998009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com