我在我的应用程序中使用随机数生成器。然而,有时它会返回完全相同的值。我的研究表明,默认的 Random 构造函数以系统时间为种子。当使用相同的种子时,会生成相同的数字。因此,如果我的方法的调用是在同一系统时间完成的(例如,调用之间的延迟很小),则会生成相同的数字。
所以看起来不错的解决方案是稍微延迟调用,这样就占用了独特的时间。我的问题是 - .NET 种子生成器中的原子时间单位是什么 - 我可以用来等待的最小数字,以便识别唯一时间并生成唯一种子?
此外,延迟是否只是让线程休眠才是正确的方法?
例如
int smallestTimeUnit = 20;
Thread.Sleep(smallestTimeUnit);
或者系统时间种子生成不可靠,我应该实现自己的种子生成方式吗?
谢谢。
最佳答案
解决方案是重用相同的 Random
对象,而不是每次都创建一个新对象。
关于c# - .NET 随机数生成 - 自动种子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8181581/