创建真正的随机数[重复]

2024-03-11

可能的重复:
为什么我的随机数生成器在 C# 中不是随机的? https://stackoverflow.com/questions/932520/why-does-it-appear-that-my-random-number-generator-isnt-random-in-c
如何使用 C# 生成真正的(非伪)随机数? https://stackoverflow.com/questions/1234094/how-can-i-generate-truly-not-pseudo-random-numbers-with-c

我创建了一个骰子游戏,其中骰子基于百分位数 1-100。

public static void Roll()
{
    Random rand = new Random((int)DateTime.Now.Ticks);
    return rand.Next(1, 100);
}

但我不认为这是基于当前时间的真正随机。

If I do

for (int i = 0; i < 5; i++)
{
   Console.WriteLine("#" + i + " " + Roll());
}

它们都是相同的值,因为DateTime.Now.Ticks没有改变,它播种的数量相同。

我在想,如果种子由于当前时间而相同,我可以生成一个新的随机种子,但感觉不像是诚实的“重新滚动”

我应该怎么做才能尝试复制接近真实/诚实的掷骰子?我应该使用RNGCryptoServiceProvider类来生成卷?


DateTime.Now.Ticks分辨率只有约16毫秒 http://blogs.msdn.com/b/ericlippert/archive/2010/04/08/precision-and-accuracy-of-datetime.aspx,所以如果你创建一个Random在 16ms“时隙”内多次过载,它们都将被播种为相同的值,因此您将获得相同的序列。

初始化你的Random在你的循环之外,以便单个Random生成序列,而不是每次在循环内创建它,这可能会导致Randoms被播种为相同的值,因此产生相同的序列。

Update

我之前的观点是默认构造函数已初始化RandomCPU 滴答数不正确,默认构造函数实际上使用环境.TickCount http://msdn.microsoft.com/en-us/library/system.environment.tickcount.aspx这是:

一个 32 位有符号整数,包含自上次启动计算机以来经过的时间量(以毫秒为单位)。

其分辨率仍然较低。如果您创建多个实例Random它们可以快速连续地在同一时间段内轻松创建,因此具有相同的种子值,并创建相同的序列。创建单个实例Random并使用它。

Update

除了您的评论之外,如果您希望跨多个线程生成随机序列,请参阅以下 Jon Skeet 文章,其中讨论了线程安全包装器:

https://codeblog.jonskeet.uk/2009/11/04/revisiting-randomness https://codeblog.jonskeet.uk/2009/11/04/revisiting-randomness

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

创建真正的随机数[重复] 的相关文章

  • EF Core Group By 翻译支持条件总和

    听说 EF Core 2 1 将支持翻译小组 我感到非常兴奋 我下载了预览版并开始测试它 但发现我在很多地方仍然没有得到翻译分组 在下面的代码片段中 对 TotalFlagCases 的查询将阻止翻译分组工作 无论如何 我可以重写这个以便我
  • 如何使用 C# 中的参数将用户重定向到 paypal

    如果我有像下面这样的简单表格 我可以用它来将用户重定向到 PayPal 以完成付款
  • “构建”构建我的项目,“构建解决方案”则不构建

    我刚刚开始使用VS2010 我有一个较大的解决方案 已从 VS2008 成功迁移 我已将一个名为 Test 的控制台应用程序项目添加到解决方案中 选择构建 gt 构建解决方案不编译新项目 选择构建 gt 构建测试确实构建了项目 在失败的情况
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • 动态加载程序集的应用程序配置

    我正在尝试将模块动态加载到我的应用程序中 但我想为每个模块指定单独的 app config 文件 假设我的主应用程序有以下 app config 设置
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • Asp.NET WebApi 中类似文件名称的路由

    是否可以在 ASP NET Web API 路由配置中添加一条路由 以允许处理看起来有点像文件名的 URL 我尝试添加以下条目WebApiConfig Register 但这不起作用 使用 URIapi foo 0de7ebfa 3a55
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur
  • Windows 和 Linux 上的线程

    我在互联网上看到过在 Windows 上使用 C 制作多线程应用程序的教程 以及在 Linux 上执行相同操作的其他教程 但不能同时用于两者 是否存在即使在 Linux 或 Windows 上编译也能工作的函数 您需要使用一个包含两者的实现
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写

随机推荐

  • Oracle“创建表为”空值

    如果您使用 create as 创建一个 Oracle 表 其中某个字段为空 您将收到错误 ORA 01723 不允许零长度列 查询示例 create table mytable as select field a null brand n
  • 架构 i386 的重复符号[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在使用
  • jQuery 背景位置动画

    我创建了一个图像 它基本上是由 3 个图像组成的 CSS 精灵 它的大小是 278x123 所以它们基本上是 3 个 278x41 的图像 我想做的是通过改变背景位置来制作动画 我尝试了很多方法 我的一个不太有效的解决方案如下 var sl
  • Java/Mysql..SQLException:表必须至少有 1 列 SQLState:42000 VendorError:1113

    我有一个连接到数据库的应用程序 如果名称尚不存在 则创建一个表 并添加新的注册用户信息 以便我可以将密码散列到我的登录框架 并将它们与数据库进行匹配也将被散列 目前我有以下错误代码 SQLException A table must hav
  • 用类隐藏

    我确信这真的很简单 但这对我来说不起作用 我编写了一个表单 允许用户使用标签从列表中选择一个月
  • Python/WebApp Google App Engine - 测试标头中的用户/通行证

    当您像这样调用网络服务时 username test12 password test34 client httplib2 Http cache client add credentials username password URL htt
  • 检查 UTF-8 字符串在 Qt 中是否有效

    在 Qt 中 有没有办法检查字节数组是否是有效的 UTF 8 序列 看起来QString fromUtf8 http qt project org doc qt 5 0 qtcore qstring html fromUtf8默默地抑制或替
  • jQuery UI 自动完成中的自定义属性问题

    我在使用 jQuery UI 的自动完成功能时遇到了自定义属性的问题 由于某些奇怪的原因 自动完成功能不允许我使用 make 或 id 属性ui item make or ui item id 但在设置为时工作ui item label H
  • Typescript:如何期望精确的类实例作为函数参数

    Code 考虑以下代码 一个基类 两个子类 以及一个采用一个子类的一个实例的函数 abstract class AbstractNumberHolder constructor private readonly value number g
  • 使用 Jackson 从 POJO 创建 JSON 模式时,从 JSON 模式中删除“id”

    如何去掉id字段 id urn jsonschema org gradle 人 来自使用 Jackson 创建的 JSON 模式 生成的模式 type object id urn jsonschema org gradle Person p
  • 未捕获的类型错误:未定义不是 WordPress 中的函数(匿名函数)[重复]

    这个问题在这里已经有答案了 我收到以下错误 这似乎是 Javascript 未解释 符号 未捕获的类型错误 未定义不是函数 main js 1 匿名函数 main js 1 下面附加的是 main js 代码 这在某个时候工作得很好 我正在
  • BrowserSync Gulp 无法在 Chrome 中打开

    我尝试在 Chrome 中使用 BrowserSync 和 Gulp 在本地主机上打开我的网站 但它不起作用 默认情况下 它在 Firefox 中打开 一切正常 但是 当我更改 gulpfile js 中的参数以在 Chrome 中打开网站
  • iOS7 上的 TableViewCell 中不会显示复选标记

    我现在正在研究一个奇怪的问题 我的应用程序部署目标设置为 iOS6 因此我想同时支持 iOS6 和 iOS7 我只有一个简单的 UITableView 用户可以在其中选择首选的通知声音 代码为 UITableViewCell tableVi
  • 预测 git Push 中将推送多少数据

    我偶尔会使用昂贵的互联网连接 并且我想知道 至少大约 有多少数据将被推送到远程git push 事实上 我想我很喜欢我的评论 可以将其作为答案发布 当您推送时 git 会创建一个包含所有必需对象的包并将其上传到远程 这意味着我们正在寻找一种
  • 将 less 和 css 文件捆绑在一起

    我觉得捆绑应该用于将一堆一起使用的文件分组到一个交付给浏览器的文件中 这意味着对于我的根样式 我想做类似以下的事情 var bundle new StyleBundle Content style Include Content mysty
  • 网格/列表视图的概念如何将图像发送到 imageitem 类

    在我的项目中 我想加载 url 图像并在 gridview 活动中显示它们 但如何将这些图像加载到 gridview 适配器呢 所以我试图理解这个概念grid list view适配器 据我了解 在一个基本示例中 它包含 3 个活动 1 主
  • Doctrine 2 QueryBuilder 添加多个选择元素/参数?

    我仍在与 QueryBuilder 学说作斗争 因为当我想将另一个元素添加到选择表达式中时 我认为它无法正常工作 在这两种情况下 学说 queryBuilder gt getQuery gt getResults 返回一个数组 其中实体表示
  • 如何将不存在的链接重定向到 Angular 2 中的主页?

    如果用户输入不存在的链接 我希望页面重定向到主页 我该怎么做 谢谢 RouteConfig path home name Home component HomeComponent path about name About componen
  • for 循环和 apply 函数系列之间的性能差异是什么?

    人们常说 一个人应该更喜欢lapply over for循环 但也有一些例外 例如 Hadley Wickham 在他的 Advance R 书中指出的那样 http adv r had co nz Functionals html htt
  • 创建真正的随机数[重复]

    这个问题在这里已经有答案了 可能的重复 为什么我的随机数生成器在 C 中不是随机的 https stackoverflow com questions 932520 why does it appear that my random num