C++ 我应该使用std::default\u random\u引擎还是应该使用std::mt19937?

C++ 我应该使用std::default\u random\u引擎还是应该使用std::mt19937?,c++,C++,当我想使用std::random生成随机数时,我应该选择哪个引擎?std::default\u random\u引擎或std::mt19937?轻量级随机数(例如游戏)的区别是什么? ,你当然可以考虑。但是,如果您的代码严重依赖于随机性的质量(例如模拟软件),则不应使用它,因为它只提供最低限度的保证: 这是库实现对生成器的选择 为相对随意的发动机提供至少可接受的性能, 不熟练和/或轻量级使用 mt1993732位mersene捻线器(或其64位对应的mt19937\u 64)位于另一侧a,通过得

当我想使用std::random生成随机数时,我应该选择哪个引擎?
std::default\u random\u引擎
std::mt19937
?轻量级随机数(例如游戏)的区别是什么?

,你当然可以考虑。但是,如果您的代码严重依赖于随机性的质量(例如模拟软件),则不应使用它,因为它只提供最低限度的保证:

这是库实现对生成器的选择 为相对随意的发动机提供至少可接受的性能, 不熟练和/或轻量级使用

mt19937
32位mersene捻线器(或其64位对应的
mt19937\u 64
)位于另一侧a,通过得非常好。因此,它是科学应用的理想选择


但是,如果你的随机数是用于(例如密码)目的的,你就不必考虑它们。 该问题目前以一票接近的票数作为主要的意见基础。我会反驳这一点,并说,

std::default\u random\u engine
客观上是一个糟糕的选择,因为你不知道你得到了什么,而切换标准库会给你带来不同的随机性质量结果


你应该选择随机数生成器提供给你想要的品质。如果您必须在两者之间进行选择,请选择
std::mt19937
,因为它为您提供了可预测和定义的行为。

它们满足不同的需求。第一个是为某个生成器定义的实现别名,而后者专门使用带有32位种子的Mersenne Twister算法


如果您没有特殊要求,
std::default\u random\u引擎
应该可以

查阅文档。随机数生成器的选择取决于您的具体情况。也就是说,Mersenne Twister通常是一个很好的起点。我很好奇什么时候应该选择
std::default\u random\u engine
。它比标准:mt19937有什么优势吗?