问题标签 [mersenne-twister]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
3784 浏览

random - 集群环境的伪随机数生成器

如何在集群上生成独立的伪随机数,例如蒙特卡罗模拟?我可以有许多计算节点(例如 100 个),我需要在每个节点上生成数百万个数字。我需要保证一个节点上的 PRN 序列不会与另一个节点上的 PRN 序列重叠。

  • 我可以在根节点上生成所有 PRN,然后将它们发送到其他节点。但这太慢了。
  • 我可以在每个节点上跳到序列中的已知距离。但是对于 Mersenne-Twister 或任何其他好的 PRNG,是否有这样的算法,可以用合理的时间和内存来完成?
  • 我可以在每个节点上使用不同的生成器。但是像 Mersenne-Twister 这样好的发电机有可能吗?怎么可能做到?
  • 还有别的吗?
0 投票
1 回答
226 浏览

c - Little Endian 上的 Mersenne Twister

维基百科关于 Mersenne Twister 的文章中提供的伪代码是否适用于 Little Endian(“原子元素大小”8 或16 位)或任何其他字节顺序?

它仅适用于 32 位系统吗?(即该数字不能存储在大于 a 的任何内容中DWORD。)

编辑:另外,它们是什么意思32nd bit of(MT[i])MT[i] & (1 << 31)还是MT[i] & 0x01别的什么?

0 投票
3 回答
238 浏览

c++ - 为纸牌游戏正确播种 RNG

我正在做一个纸牌游戏,我需要洗牌算法做得很好,每次游戏运行时都不同,并且没有可预测的纸牌序列。

我正在使用 Mersenne twister 算法,但它仍然需要一个种子,所以说真的,虽然它产生了大量的数字,但现在只有 1000 个可能的游戏序列,因为我使用 time(NULL) 来播种。我应该如何播种?

0 投票
1 回答
2848 浏览

c++ - C++ RNG (Mersenne Twister) 需要种子

我编写了一个包含不同算法的 RNG 类,但是它没有按预期工作。除了我想使用正常(而不是统一)分布的事实之外,我的代码总是返回相同的数字(最大值)或仅返回区间 [min,max] 中的 2 个数字:

谁能解释一下解决这个难题缺少什么?此外,我如何实现正态分布?上次我尝试时,std::normal_distribution我无法进入界限!

编辑:当我谈到正态分布时,我的意思是靠近两个边界的 RNG 的结果不应该像两者的平均值那样频繁地生成。例如,查看标准高斯分布的图形表示。我指的是它,因为它可视化了我想以这种方式实现/使用的结果值的概率,如果你理解的话。

0 投票
1 回答
8242 浏览

c - 如何正确播种 mersenne twister RNG?

这实际上并不像我最初想的那么简单。

在没有硬件 RNG 的情况下,播种 Mersenne Twister 的最佳方法是什么?

或者我应该说,播种用于生成 UUID 的 Mersenne Twister RNG 的可接受方式是什么?

0 投票
2 回答
1881 浏览

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

我正在尝试找到一个 RNG 来生成伪随机位流。我发现 Mersenne Twister (MT19937) 是一种广泛使用的 RNG,它可以生成良好的 32 位无符号整数,并且已经完成实现以生成明显良好的双精度浮点数(生成 53 位整数)。但我似乎没有找到任何关于它在事情的位面表现良好的参考。

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

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

0 投票
1 回答
257 浏览

c++ - 一个函数中的局部变量改变会导致一个不相关的函数,C++

只是为了预先警告人们,我是一名物理学家,正在编写一个模拟,从专业程序员的角度来看,这可能是玩具代码,所以我的编码知识不是很好。无论如何,解释 700 行,我的代码如下所示:

我的问题是当我改变

,这是一个局部变量,到

我的随机数生成器

给出了不同的结果,即使我给了它一个恒定的种子,如果我多次运行代码而不改变任何东西,它也会给出相同的序列。如果我遗漏了一些重要的事情,我会提前道歉。

0 投票
2 回答
231 浏览

c - 需要帮助将 C Mersenne twister 实现转换为对我有用

我正在使用Mersenne twister 的这个实现来编写我正在编写的菱形正方形地形生成器。使用单独的实现而不是内置的 rand() 的要点是我希望每次都使用相同的种子生成相同的地图。Diamond-square 需要在每个像素上添加一个随机误差,所以我需要从一个种子中生成很多很多随机数。Mersenne twister 对此有好处,但据我所知,这个实现只生成一个随机数。我已将 mt_init() 中的 rand() 替换为整数参数。但是,我无法进一步说明代码的开头或结尾,所以我必须求助于您:我应该采取哪些步骤才能使 mt_random(n) 返回它所带出的 Mersenne twister 系列中的第 n 个随机数?

0 投票
3 回答
2261 浏览

random - 测试 PRNG 的质量

我正在玩 PRNG(比如 Mersenne Twister 和rand()stdlib 的功能),我想要一个很好的测试来帮助我确定 PRNG 产生的随机数据的质量。我已经使用 PRNG 生成的随机数计算了 Pi 的值,我发现rand()和 Mersenne Twister 非常接近以提供区别(我需要在小数点后 10 位后仔细检查吗?)。

我对蒙特卡洛模拟不太了解。请让我知道一些算法/应用程序(可能是一些简单但可以提供良好推论的东西),这将有助于我在质量方面区分它们。


编辑1:我之前没有注意到,但是有一个类似的线程:如何测试随机数?

编辑 2:如其中一条评论所述,我无法解释 NIST 的结果。我从random.org得到了视觉解释模式(如果有的话)的想法,并且因为它的简单性而遵循它。如果有人可以评论我的测试过程,我会很高兴:

  1. 使用 rand() 和 MT1997 从 [0,1] 生成 N 个随机数
  2. 如果则为(round(genrand_real1() / rand_0_1()))红色像素,否则为黑色

据我了解,这不是一个非常精确的解决方案,但如果这提供了一个合理的估计,那么我现在可以接受这个。

0 投票
3 回答
566 浏览

php - array_rand 是否使用 Mersenne Twister 算法?

在 PHP 中,我们可以选择mt_rand()rand(),其中mt_rand()使用 Mersenne Twister 算法并rand()使用 libc 随机生成器。

我想使用array_rand从数组中选择一个随机项。但是,是否array_rand使用 Mersenne Twister 算法?

array_rand实现我自己的using非常简单mt_rand,但如果 array_rand 使用 Mersenne Twister,那就更好了。