C++11 使用mt19937_64比其32位变体有什么优势?

C++11 使用mt19937_64比其32位变体有什么优势?,c++11,prng,C++11,Prng,我一直在想,使用mt19937_64(例如在boost或c++11中)比其32位变体有什么优势 谢谢。它有一个更大的种子,允许更多不同的伪随机序列。从本质上说,这意味着你可以把更多的随机性。它产生64位数字,所以一次可以得到更多的伪随机性。而且,它是使用64位操作实现的,因此它在64位机器上可能运行得更快,在32位机器上可能运行得更慢 两者都包含相同数量的总状态,64×312=19968位,因此序列在这个意义上是同样可预测的。如果您想要更多的状态,您可以使用std::mersenne_twist

我一直在想,使用mt19937_64(例如在boost或c++11中)比其32位变体有什么优势


谢谢。

它有一个更大的种子,允许更多不同的伪随机序列。从本质上说,这意味着你可以把更多的随机性。它产生64位数字,所以一次可以得到更多的伪随机性。而且,它是使用64位操作实现的,因此它在64位机器上可能运行得更快,在32位机器上可能运行得更慢


两者都包含相同数量的总状态,64×312=19968位,因此序列在这个意义上是同样可预测的。如果您想要更多的状态,您可以使用
std::mersenne_twister_engine

自己对其进行参数化。另一个区别是,当您生成0和1之间的双数时,您将填充所有53位,而不仅仅是32位。不确定这在哪里可能有关系,但很高兴知道。