使用C++11随机库生成随机数

2024-01-23

正如标题所示,我正在尝试找出一种使用新的 C++11 生成随机数的方法<random>图书馆。我用这段代码尝试过:

std::default_random_engine generator;
std::uniform_real_distribution<double> uniform_distance(1, 10.001);

我的代码的问题是每次编译和运行它时,它总是生成相同的数字。所以我的问题是随机库中还有哪些其他函数可以在真正随机的情况下完成此任务?

对于我的特定用例,我试图获取范围内的值[1, 10]


来自 Microsoft 的 Stephan T. Lavavej(stl) 在 Going Native 上做了一次关于如何使用新的 C++11 随机函数以及为什么不使用的演讲rand()。他在其中添加了一张幻灯片,基本上可以解决您的问题。我已经复制了下面幻灯片中的代码。

你可以看到他的完整演讲here https://learn.microsoft.com/en-us/events/goingnative-2013/rand-considered-harmful:

#include <random>
#include <iostream>

int main() {
    std::random_device rd;
    std::mt19937 mt(rd());
    std::uniform_real_distribution<double> dist(1.0, 10.0);

    for (int i=0; i<16; ++i)
        std::cout << dist(mt) << "\n";
}

We use random_device一次为名为的随机数生成器播种mt. random_device()慢于mt19937,但它不需要播种,因为它从您的操作系统请求随机数据(这些数据将来自不同的位置,例如RdRand http://en.wikipedia.org/wiki/RdRand例如)。


看着这个问题/答案 https://stackoverflow.com/questions/16224446/stduniform-real-distribution-inclusive-range, 看起来uniform_real_distribution返回范围内的数字[a, b), 你想在哪里[a, b]。为此,我们的uniform_real_distibution实际上应该看起来像:

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

使用C++11随机库生成随机数 的相关文章

  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • 将数据框中重叠的范围合并到唯一的组中

    我有一个 n 行 3 的数据框 df lt data frame start c 178 400 983 1932 33653 end c 5025 5025 5535 6918 38197 group c 1 1 2 2 3 df sta
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 开发了 strtok 替代品

    我开发了自己的 strtok 版本 只是为了练习指针的使用 任何人都可以看到这有任何限制 或者无论如何我可以改进 void stvstrtok const char source char dest const char token Sea
  • 许多控件的 Keydown 处理程序

    有没有更好的方法为繁忙表单上的许多控件提供按键处理程序 在某些情况下 单独使用表单处理程序是行不通的 Private Sub rText KeyDown ByVal Sender As Object ByVal e As KeyEventA
  • 将 NSInteger 转换为 NSUInteger?

    我正在尝试将 NSInteger 转换为 NSUInteger 我用 google 搜索了它 但没有找到真正的答案 我该怎么做 NSInteger and NSUInteger只是原始整数类型的 typedef if LP64 NS BUI
  • Google 脚本选择 Google 电子表格中的整行

    我想知道我们是否可以使用 Google 脚本在电子表格中选择一行 如下所示 无论如何 首先我尝试使用此功能来处理列 但我收到数据错误 未找到 如果您有一个想法 function testGetFullColumn getFullColumn
  • 为什么使用类而不是函数? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我确实知道类的一些优点 例如变量和函数作用域 但除此之外 对我来说 拥有一组函数似乎比拥有许多类的实例和抽象更容易 那么为什么将相似的函数分组在
  • 关于C++中const指针的问题?

    我无法解释以下代码 double d 100 double const d1 30 double const p d Line 1 double const p1 d1 Line 2 在上面的代码中 Line 1没问题 但是Line 2产生
  • JPA 单表层次结构中的 PostgreSQL 标识

    在具有单个表继承层次结构的 Hibernate JPA 环境中使用 PostgreSQL 时 我看到了奇怪的行为 首先是我的环境 PostgreSQL 8 3 春季2 5 6SEC01 Hibernate entitymanager 3 4
  • 具有 json 模式的 Kafka jdbc 接收器连接器无法正常工作

    使用最新的 kafka 和 confluence jdbc 接收器连接器 发送一条非常简单的 Json 消息 schema type struct fields type int optional false field id type s
  • 每 1 分钟定期调用一次 AWS Lambda

    我如何定期调用 AWS Lambda 特别是每 1 分钟一次 当前功能允许 Lambdas 设置为5分钟触发 https stackoverflow com a 27382253 358013 但我正在寻找更短的时间间隔 我想过永远运行 L
  • phpass 返回不同的结果

    我只是将我的项目从本地主机放到我的主机上 并使用相同的 phpass 函数 我收到不同的结果 并且返回的字符串的长度也不同 顺便说一句 一切都在本地主机上运行 所以在线时相同的函数返回 false 我想知道可能是什么问题 结果如下 Inpu
  • 如何在 Javascript/Angular JS 中进行舍入——但删除无关紧要的数字

    我的 Javascript 控制器中有以下语句 scope myList 0 1 0 5 0 6666666 我的 AngularJS 模板包含以下行 div i div 这会产生以下 HTML 输出 div 0 div div 1 div
  • JavaFX 一次运行大量倒计时器?

    所以我可以看到几种不同的方法来完成我需要的事情 并且我已经做了很多谷歌 堆栈溢出搜索 但找不到我真正想要的东西 我需要运行多个 倒计时器 我需要在不同时间同时运行大约 6 个 可能最多 10 个 倒计时器 我的主程序上有一个选项卡窗格 我在
  • 强制分配实内存

    是否可以分配大块实内存 512Mb 1Gb 安装了 4Gb 而不将其丢弃到交换区 我的最终目的是释放系统内存 当可用内存接近 0 时 os x 会出现问题 它不会努力将未使用的内存放入交换区 并且尝试获取内存时一切都会变得非常慢 所以 我决
  • PrimeNg 上下文菜单传递数据问题

    我正在使用 PrimeNg 的上下文菜单 v6 0 1 问题是文档不清楚 我也无法在网上找到有关如何将数据传递给命令函数的信息 例如 我在屏幕上渲染了 10 个对象 并且上下文菜单附加到所有这些对象 现在如果我单击菜单项 我想获取渲染上下文
  • Laravel 分页链接与渲染

    我已经使用 Laravel 5 x 几个月了 我只是想知道使用分页时使用链接和渲染之间有什么区别 我做了一些研究 人们以相同的方式使用这两者 假设我有一个从控制器返回的数组变量 我会将分页切成每个视图 5 个项目 public functi
  • PowerShell 脚本不会作为 Windows 计划任务执行

    我有一个 PowerShell 脚本 可以运行 在 Windows 任务计划程序中 我创建了一个要执行的新任务 C Windows System32 WindowsPowerShell v1 0 powershell exe 将参数作为我的
  • mysql 触发器不工作?

    我正在尝试创建一个触发器来根据另一个表上的插入有条件地插入新行 我似乎无法确定语法 到目前为止 这是我所拥有的 DELIMETER CREATE TRIGGER overPricedCar AFTER INSERT ON cars FOR
  • 无法获取Android广告ID

    我正在尝试获取 Android 广告 Id 但找不到正确的方法 事实上 我什至无法获取广告 ID 提供商 isAdvertisingIdProviderAvailable 始终返回 false 我使用的是带有 8 0 PlayStore 的
  • 什么是 Microsoft.Practices.EnterpriseLibrary.Data

    我想知道什么Microsoft Practices EnterpriseLibrary Data dll是以及为什么我们使用这个组件 这个dll有什么好处呢 我想在 3 层架构上创建一个项目 并且很好奇执行 sql 查询的最佳方法是什么 我
  • 使用C++11随机库生成随机数

    正如标题所示 我正在尝试找出一种使用新的 C 11 生成随机数的方法