c# - .NET 随机数生成 - 自动种子

标签 c# .net random

我在我的应用程序中使用随机数生成器。然而,有时它会返回完全相同的值。我的研究表明,默认的 Random 构造函数以系统时间为种子。当使用相同的种子时,会生成相同的数字。因此,如果我的方法的调用是在同一系统时间完成的(例如,调用之间的延迟很小),则会生成相同的数字。

所以看起来不错的解决方案是稍微延迟调用,这样就占用了独特的时间。我的问题是 - .NET 种子生成器中的原子时间单位是什么 - 我可以用来等待的最小数字,以便识别唯一时间并生成唯一种子?

此外,延迟是否只是让线程休眠才是正确的方法?

例如

int smallestTimeUnit = 20;
Thread.Sleep(smallestTimeUnit);

或者系统时间种子生成不可靠,我应该实现自己的种子生成方式吗?

谢谢。

最佳答案

解决方案是重用相同的 Random 对象,而不是每次都创建一个新对象。

关于c# - .NET 随机数生成 - 自动种子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8181581/

相关文章:

matlab - rng ('default' ) 用于 MATLAB 与 Octave 中的 rand() 函数

c# - 存储 Windows Phone 的设置

c# - if 语句在数据库 MVC 4 中显示 1 或 2

c# - HtmlAgilityPack 按名称获取元素

c# - 以像素为单位获取字体指标

visual-studio-2010 - Visual Studio 2010中的随机编译错误

c# - 多线程环境中的 SQL Server 存储过程

.net - 在 VS2008 中,网站和 Web 应用程序有什么区别?

c# - 在 C# 中将 MS Access 颜色代码转换为十六进制

ruby - 在 Ruby 中,如何根据最小权重进行加权随机选择?