Mersenne Twister vs Mersenne Twister 64位

Sid*_*Bob 6 c++ random boost

Boost同时提供mt19937和mt19937_64 http://www.boost.org/doc/libs/1_55_0/doc/html/boost_random/reference.html#boost_random.reference.generators

困惑 - 我是否必须使用64位版本(根据上面的页面有更糟糕的性能)才能在64位平台上获得良好的随机数?或者不重要吗?

Ral*_*ich 2

这是一篇非常古老的帖子,但这里有一种误解,我想澄清一下。Mersenne Twister 在内部产生整数状态。它产生一系列随机整数值(可以评估整数中每个位的随机性)。通常,您会将这个整数输出转换为浮点数——隐藏这个事实。

如果 boost 提供 _64 位版本,这仅意味着内部状态是 64 位整数,而不是 32 位标准整数。这是一个不小的差异,因为在 64 位版本中必须保证两倍的随机性。这实际上是昂贵的并且速度明显慢。如果您能从中受益,这在很大程度上取决于您的问题。这是有可能的——由于随机数序列质量差而导致的问题通常被低估了很多。无论如何,Mersenne Twister 并不是一个出色的随机数生成器。

还有其他甚至具有 128、256 或 512 位内部整数的随机数生成器。我不知道更多,但这肯定是可能的。

这里重要的注意事项是:这与您的硬件系统/操作系统是 32 位还是 64 位(或其他任何东西)绝对无关。