std::shuffle 的使用和实用性?

2024-01-07

如果你查看 C++11 中随机洗牌的规范,就会发现有 3 个函数。我的问题是:的典型用途和优点是什么:

template< class RandomIt, class URNG >
void shuffle( RandomIt first, RandomIt last, URNG&& g );

相比:

template< class RandomIt >
void random_shuffle( RandomIt first, RandomIt last );

我的意思是,似乎无论 URNG 是什么(均匀分布),结果都是相同的(从统计角度来看)。我唯一看到的一点是std::shuffle是头安全的,而这种过载std::random_shuffle不是。你能否证实这一点?

编辑:我认为 URNG 应该是一个统一的分布,但这似乎无法编译。那么有人可以提供一个使用的小例子吗std::shuffle?


正如评论中提到的,std::shuffle需要一个随机数发生器 (or engine用标准语言来说),而不是随机数分布。不同的随机数生成器即使具有理论上均匀的分布,也具有不同的特性。

  • Random or 伪随机- 真正的随机数生成器使用某种外部熵源。伪随机生成器 (PRNG) 是严格确定性的。
  • 表现- 一些发电机比其他发电机更快。
  • 内存使用情况- 一些 PRNG 需要比其他 PRNG 更多的内存来存储其状态。
  • 经期长度- 所有 PRNG 都有一个有限的周期,之后它们开始从头开始重复相同的序列。有些人的周期比其他人长得多。
  • 随机性质量- 有多次测试 http://en.wikipedia.org/wiki/Randomness_test用于测量伪随机流中是否存在微妙(或不那么微妙!)的模式。例如,参见顽固测试 http://en.wikipedia.org/wiki/Diehard_tests.
  • 流是否是加密安全 http://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator或不。 AFAIK,没有一个标准的 PRNG 是这样的。

有关标准提供的不同生成器的概述,请参阅http://en.cppreference.com/w/cpp/numeric/random http://en.cppreference.com/w/cpp/numeric/random.

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

std::shuffle 的使用和实用性? 的相关文章

  • 我们可以在 C# 中定义枚举的隐式转换吗?

    是否可以在 C 中定义枚举的隐式转换 可以实现这一目标的东西吗 public enum MyEnum one 1 two 2 MyEnum number MyEnum one long i number 如果没有 为什么不呢 有一个解决方案
  • 获取当前用户的 NetworkCredential (C#)

    我正在尝试从控制台应用程序调用 Web 服务 并且我需要向客户端提供System Net NetworkCredential object 是否有可能创建一个NetworkCredential启动应用程序的用户的对象而不提示输入用户名 密码
  • OWIN AuthenticationOptions 在 mvc5 应用程序中运行时更新

    Hi 情况如下 我在 iis 7 上有一个带有 Identity 2 的 MVC 5 应用程序 该应用程序为多个网站提供服务 主机名是某些网站的关键 网站 另一个网站 等等 我决定在我的所有网站上使用谷歌外部登录 每个网站都应该是带有个人
  • 带方括号的 Uri.EscapeUriString

    这是一个奇怪的问题 但让我们看看它会得到什么样的回应 如果我编写一个控制台应用程序 VS 2013 NET 4 5 1 并执行这行代码 Uri EscapeUriString 我明白了 但是 如果我执行同样的事情 嗯 从技术上来说Uri E
  • 运行时两个注册之间的简单注入器基于动态上下文的注入

    我有一个使用 Simple Injector 进行命令处理程序注册的中介应用程序 并且注入和处理程序均已设置并完美运行 class DoWashingCommandHandler IRequestHandler
  • 如何在 C++ 中从模板基类的构造函数调用模板超类的构造函数?

    我正在使用 sublimetext3 用 c 进行编程 我的程序有一个名为 Array 的超类和一个名为 IntArray 的子类 这两个类都是模板类 目前 我在编译该程序时遇到问题 它不断在我的 IntArray cpp 文件中给出错误
  • ASP.NET 中的 thread.sleep

    我正在为我的网站模拟彗星实时馈送协议 因此在我的控制器中我添加 while nothing new before timeout Thread Sleep 1000 但我注意到添加此功能后整个网站变慢了 调试后我得出结论 当我打电话时Thr
  • Python - 从一定范围内随机采样,同时避免某些值

    我一直在阅读有关random sample 函数在random模块 但没有看到任何可以解决我的问题的东西 我知道使用random sample range 1 100 5 会给我来自 人群 的 5 个独特样本 我想得到一个随机数range
  • argc 和 argv 在 Windows 中没有用吗?

    在 Linux 中 argc 和 argv 计算终端中的参数 但在 Windows 中 我找不到放置第二个参数的地方 事实上 每次我运行该程序时 它都会创建那个丑陋的黑色窗口 我什至没有机会给出任何争论 那么这两个变量在Windows平台下
  • Excel 2007 中的数值 - 底层 xml 文件中的表示与存储

    这个问题与 NET和OpenXml有关 我已经阅读了以下文章 它有很好的解释 但没有回答我的问题 Excel 2007 中数值的可视化与底层 xml 文件不一致 https stackoverflow com questions 58594
  • 如何在Windows Azure上调用ffmpeg.exe转换音频文件?

    我在 Windows Azure 上运行 Web 角色来接收 AAC 音频文件 通过 base64 字符串上传 并将它们存储到 blob 中 现在效果很好 接下来 我还必须将它们转换为 MP3 并将 MP3 存储到 blob 中 我决定使用
  • WPF MVVM后台打印数据绑定问题

    我正在使用 wpf mvvm 开发一个销售点应用程序 在交易生命周期的许多阶段 都会在后台打印收据 我已经使用其他示例在后台生成和打印收据 我正在后台打印一个 UserControl 一切看起来都很棒 然后 我为该控件创建了 ViewMod
  • 是否有理由为什么用 XmlInclude 修饰的基类在序列化时仍然会抛出类型未知的异常?

    我将简化代码以节省空间 但所提供的内容确实说明了核心问题 我有一个类 它的属性是基类型 有 3 个派生类可以分配给该属性 如果我将任何派生类分配给容器并尝试序列化容器 XmlSerializer 会抛出可怕的错误 类型 x 不是预期的 使用
  • 实体框架中的导航属性是什么

    我是实体框架的新手 当Visual Studio创建模型图时我们主要可以看到Entities Propertie和Navigation Properties这两个东西 那么这些Navigation Properties是什么 如何使用它们
  • 为什么 ASP.Net MVC Range 属性采用类型?

    我只是想知道为什么范围验证属性可以采用类型和两个字符串作为参数 这是为了根据枚举或类似的东西验证字符串吗 另外 我想做的是找到一种简单的方法来验证必须出现在枚举中的 3 个字符的字符串 有什么建议吗 谢谢 亚历克斯 我确实发现你提到的 Ra
  • Subsonic 3 ActiveRecord 嵌套选择导致 NotIn 错误?

    我有以下 Subsonic 3 0 查询 其中包含嵌套的 NotIn 查询 public List
  • 更快的 WinSock sendto()

    我使用的是 Windows Server 2008 我的程序是用 C 编写的 我在 while true 循环中使用 WinSock2 和 sendto 来发送数据包 代码如下 while true if c snd gt max c sn
  • 使用反射检测属性的访问修饰符类型

    我编写了一些代码来使用反射查看属性 我已经使用反射从类中检索了属性列表 但是我需要查明该财产是公共的还是受保护的 例如 public string Name get set protected int Age get set Propert
  • 具有可导出私钥的证书的“错误密钥”例外

    我正在尝试使用非对称加密来加密然后解密文件 我已经使用 makecert 创建了一个测试证书并将其安装到我的个人本地计算机存储中 将来我必须在多个服务器上安装此证书 这就是为什么我使用 pe 标志创建它 即使用可导出的私钥 证书已成功创建并
  • Unity 错误“内部构建系统错误。后端退出,代码为 -1073740791。”摧毁/杀死了我的项目

    好吧 我可能在这里夸大了 但这是真的 当我开始打开它时 该项目由于错误 内部构建系统错误 后端退出 代码为 1073740791 而被破坏 应用程序 这个项目已经在Google Play上发布了 也许和设置有关 有人可以帮忙吗 完整错误 I

随机推荐

  • 数据库磁盘映像格式错误或文件已加密或不是数据库

    我需要将没有 Root 的手机上的数据库复制到pad上 所以我也采用了像其他人一样的方法 首先将 data data databases test db复制到 sdcard 然后我使用在我的电脑或我朋友的电脑上使用adb shell sql
  • 反转 Jenkins 的一次一次哈希

    我将如何获取与返回的哈希匹配的任何可能的字符串值 我不想获取所使用的确切密钥 只想获取传递给函数时将返回未知密钥的相同哈希值的任何密钥 uint32 t jenkins one at a time hash const uint8 t ke
  • #warning 和 #error 作为宏

    有没有办法让宏在编译时强制出现警告和错误 我目前有这样的事情 if defined clang define PRAGMA x Pragma x elif defined GNUC define PRAGMA x Pragma x elif
  • 渲染动作渲染部分

    据我了解 两者之间有很大区别Html RenderPartial包含在 ASP NET MVC 版本和HTML RenderAction in the Microsoft Web Mvc ViewExtensions包含在 MVC 期货中
  • React 动态设置状态属性

    我正在使用 React 并且有一些方法可以单独设置组件的状态 我有以下方法 setLineColor value this setState stroke value gt this props data this getStyleData
  • 如何在 Xcode 4 上创建新的“模板”类别并在那里使用我自己的文件模板?

    我想开始为 iOS 应用程序使用我自己的模板 我不想要任何重大的改变 但更简单的事情 比如 添加 删除一些样板代码 添加一些pragma mark部分 对每个文件硬编码我公司的名称和一些注释 改变缩进 等等等等等等 我们的想法是 我们将在创
  • 在 Java 中列出文件(按修改日期排序)的最佳方法?

    我想获取目录中的文件列表 但我想对其进行排序 以使最旧的文件排在第一位 我的解决方案是调用 File listFiles 并根据 File lastModified 重新使用列表 但我想知道是否有更好的方法 编辑 按照建议 我当前的解决方案
  • 组织毡尖笔:使用 JS 通过相邻项目的相似性优化 2D 网格中项目的排列 [更新]

    UPD 该问题已更新具体细节和代码 请参见下文 警告 这个问题是关于优化矩阵中项目的排列 这不是比较颜色 最初 我决定提供有关我的问题的背景会有帮助 我现在对这个决定感到后悔 因为结果恰恰相反 关于颜色的无关紧要的讨论太多 而几乎没有关于实
  • TS2538 类型“未定义”不能用作索引类型。当检查分配给变量时

    我收到 TS 错误 TypeScript 错误 类型 未定义 不能用作索引类型 TS2538 对于这个简单的函数 根据提供的索引从数组获取对象 const myArr Array name John name Tom function ge
  • 如何忽略asp.net表单中的url路由

    我正在使用 NET 3 5 SP1 框架 并且在我的应用程序中实现了 URL 路由 我收到 JavaScript 错误 Error ASP NET Ajax client side framework failed to load Reso
  • 如何改变GtkTextView的背景颜色?

    如何改变GtkTextView的背景颜色 我尝试使用普通的小部件设置 bg 功能 但 gtk 只是更改 GtkText 视图的边框颜色 另外 有人可以用简单的例子向我解释一下如何更改 GtkTextView 中的文本颜色 字体 文本大小 G
  • 在 SQL Server 2008 R2 中获取时区

    如何获取 Microsoft SQL Server 2008R2 中的时区列表 在 SQL Server 2008 中使用时区数据 http blogs msdn com b sqlprogrammability archive 2008
  • UDP 服务器出现分段错误

    我使用 UDP 编写了以下回显服务器 但我不知道为什么它在 sendto 函数中给我分段错误 它接收良好 但在将数据发送回客户端时出现问题 我已经尝试找到问题几个小时了 但一无所获 有人可以指出错误或我可能做错了什么吗 谢谢 include
  • Angularjs 使用自定义插值符号作为范围

    我目前有一个 underscore js 模板 我也想将其与 Angular 一起使用 并且仍然可以与 underscore 一起使用 我想知道是否可以使用指令更改特定范围的插值开始和结束符号 如下所示 angular directive
  • Android 中用于接听电话的滑块按钮

    我想为来电开发自己的 接受 和 拒绝 按钮 为了防止从口袋里拿出手机时意外接听或拒绝来电 我想制作一个滑块式按钮或类似的东西 我是 接听电话不仅仅是点击 接听 按钮 这更像是从左向右 或相反 滑动手指 让按钮随着时间变宽 就像安卓一样 有什
  • 自定义 ASP.NET Identity 2.0 UserStore - 是否需要实现所有接口?

    我创建了一个自定义IUserStore
  • h2o 模型不适合驱动程序节点的内存错误

    我通过 H2O 中的 R 代码运行 GBM 模型 并得到以下错误 相同的代码在几周内运行良好 想知道这是 H2O 方面的错误还是用户系统上的配置 water exceptions H2OModelBuilderIllegalArgument
  • 将MySQL数据库置于版本控制之下?

    我目前在我的 PHP 项目中使用 SVN 我想我也应该将我的数据库置于版本控制之下 但是最好的方法是什么 我是否只需在 SVN 中的项目中创建一个 db 文件夹 将 SQL 更改粘贴到名为 from 1 0 to 2 0 sql 的文件中并
  • 使用 jQuery 实际设置选项元素上的选定属性

    我正在使用 jQuery 中的选项元素生成一个选择列表 简化后看起来像这样 var sel
  • std::shuffle 的使用和实用性?

    如果你查看 C 11 中随机洗牌的规范 就会发现有 3 个函数 我的问题是 的典型用途和优点是什么 template lt class RandomIt class URNG gt void shuffle RandomIt first R