c++ - 使用给定种子生成的随机数序列是否保证在不同版本的标准中是相同的?
问题描述
如果我用给定的数字(比如 )从 C++ 标准库中为随机数生成器播种seed = 1
,并生成一个随机数序列,这个序列是否保证在标准的未来版本中是相同的?
C++ 标准是否对此提供保证?
解决方案
有点迂腐,对标准的未来版本没有任何保证,包括可能会有标准的未来版本的想法。
现在,关于你真正的问题。C++标准库中的“那个”随机数生成器?他们有很多。rand
不是其中之一:-)
有“随机数引擎”,可以生成“随机位序列”。他们包括:
linear_congruential_engine
mersenne_twister_engine
subtract_with_carry_engine
rand.predef部分给出了特定随机数引擎所需的结果。这告诉您它们应该是便携式的。[感谢@HowardHinnant 的参考。]
另一方面,分布(uniform_int_distribution
等)可能因实现而异。
推荐阅读
- python - 在 Python 的 .apply() 调用中使用 lambda 函数时,如何调用第二个函数?
- excel - ISBLANK(INDEX.... 无法识别空白单元格
- php - Eloquent:从 `hasMany` -> `hasOne` 关系中获取“最大值”
- apache-flink - 收集后 Flink TestHarness 输出不清除
- java - 如何在keycloak登录页面中选择语言环境,而不是用户默认语言环境?
- javascript - 如何从 Reanmited Value 中获取数值?
- angularjs - PDFJS:文本层渲染两次
- git - 无法通过 Git Bash 将 Origin Master 推送到 GitHub
- python - 如何在 python 中使用 plotly 制作混合统计子图?
- excel - 如何使用 vba Excel 修复“运行时错误 91:“对象变量或未设置块变量”?