人们通常会问为什么他们在使用时会得到相同的数字Random.在他们的情况下,他们无意间创建Random每次的新实例(而不是仅使用一个实例),这当然导致相同的数字.但在我的情况下,我确实需要几个Random返回不同数字流的实例.
在我看来,使用硬编码的种子是一个坏主意,因为在重新启动程序后,您会一次又一次地获得相同的值.那这个呢:
int seed1 = (int)DateTime.Now.Ticks - 13489565;
int seed2 = (int)DateTime.Now.Ticks - 5564;
Run Code Online (Sandbox Code Playgroud)
我知道这看起来很傻和天真,但每次重启后都会避免相同的值,两个种子应该不同.或者可能
Random helper = new Random();
int seed1 = helper.Next(1, int.MaxValue);
int seed2 = helper.Next(1, int.MaxValue);
Run Code Online (Sandbox Code Playgroud)
如你所见,我在这里有点无创,需要你的帮助.谢谢.
Jon Skeet 建议使用辅助Random对象和锁来创建Random对象工厂。例如:
public static Random NewRandom()
{
lock (globalLock)
{
return new Random(secondaryRandom.Next());
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
220 次 |
| 最近记录: |