random - Mersenne Twister 是一个好的二元 RNG 吗?

标签 random mersenne-twister

我正在尝试找到一个 RNG 来生成伪随机位流。我发现 Mersenne Twister (MT19937) 是一种广泛使用的 RNG,它可以生成良好的 32 位无符号整数,并且已经实现了生成明显良好的 double float (生成 53 位整数)。但我似乎没有找到任何关于它在细节方面表现良好的引用。

Marsaglia表达了对 Mersenne Twister 随机性的一些担忧,这让我对使用它产生了怀疑。

有人知道 Mersenne Twister 是否有用于生成伪随机位的显着偏差吗?如果是这样,有人知道一个好的伪随机位生成器吗?

最佳答案

所有伪随机生成器都努力生成每位的高度不可预测性。目前,在您观察到 624 个值之前,无法以比随机机会更好的程度来预测梅森 Tornado 。

所有“X RNG 好不好”形式的问题都必须回答:“你用它做什么?” Meresene Twister 因其出色的频率分布而在模拟中取得了巨大成功。 在加密情况下,它完全没有任何值(value)。可以通过查看任何 624 个连续输出来识别内部状态。 Blum Blum Shub 在加密情况下非常强大,但在模拟中使用时运行速度慢得令人无法接受。

关于random - Mersenne Twister 是一个好的二元 RNG 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8720794/

相关文章:

c++ - boost::random经常在不同状态下从同一种子生成相同值

java - 用java语言从org.rda导入类

用于抛硬币问题的 Python 代码

multithreading - 在 Julia 的多线程循环中设置种子

c++ - 我如何提高这种随机素性测试算法的复杂性?

c - Mersenne Twister init_by_array() 函数说明

sql-server-2008 - 在SQL Server 2008 R2中生成X位随机数

C++ : Seeding mt的低32位包含什么

algorithm - mersenne twister - 有没有办法跳到特定状态?

python - 为什么 random.random() 在 Python 中不安全?