15得票3回答
Mersenne Twister预热与可重复性

我目前的C++11项目需要执行M次模拟。对于每个模拟 m = 1, ..., M,我使用一个如下构造的 std::mt19937 对象随机生成数据集: std::mt19937 generator(m); DatasetFactory dsf(generator); 根据https://...

11得票2回答
Mersenne Twister在C++中是线程安全的吗?

#include <random> int f() { std::random_device seeder; std::mt19937 engine(seeder()); std::uniform_int_distribution<int> ...

10得票5回答
集群环境下的伪随机数生成器

我如何在集群上生成独立的伪随机数,例如用于Monte Carlo模拟?我可以有许多计算节点(例如100个),并且我需要在每个节点上生成数百万个数字。我需要保证一个节点上的PRN序列不会与另一个节点上的PRN序列重叠。 我可以在根节点生成所有PRN,然后将它们发送到其他节点。但这会非常慢。 ...

9得票4回答
Mersenne Twister - 是否有一种方法可以跳转到特定状态?

我有点不确定这个问题的正确论坛。它介于理论计算机科学/数学和编程之间。 我使用Mersenne-Twister生成伪随机数。现在,从给定种子开始,我想跳转到序列中的第n个数字。 我看过这个网站:http://www-personal.umich.edu/~wagnerr/MersenneT...

18得票3回答
在R和Julia中生成相同的随机数

我希望在R和Julia中生成相同的随机数。两种语言似乎都默认使用Mersenne-Twister库,但是在Julia 1.0.0中:julia> using Random julia> Random.seed!(3) julia> rand() 0.8116984049958...

52得票3回答
std::mt19937需要预热吗?

我读到很多伪随机数生成器需要大量样本才能"预热"。当使用std::random_device作为std::mt19937的种子时,是否也是如此?或者我们可以期望它在构造后就准备好了吗?涉及的代码:#include <random> std::random_device rd; st...

26得票8回答
多线程的随机数生成

问题 我打算在Linux下编写一个C++11应用程序,用大约一百万个伪随机的32位数字进行一些数值模拟(不是密码学)。为了加快速度,我想使用所有桌面CPU核心的并行线程来执行模拟。我想使用由boost提供的Mersenne Twister mt19937作为PRNG,我猜为了性能原因,每个线程...

23得票1回答
特定C++随机数生成的Clang性能下降

使用C++11的随机模块时,我发现当与uniform_real_distribution(浮点数或双精度,无所谓)结合使用std::mt19937(32位和64位版本)时,遇到了奇怪的性能下降。与g++编译相比,它慢了一个数量级以上! 罪魁祸首并不只是mt生成器,因为使用uniform_int...

9得票3回答
当使用float精度时,相同的Mersenne Twister种子在C++随机数生成器中产生不同的数字。

我需要运行可重复的蒙特卡罗模拟。这意味着我使用已知的种子并将其存储在我的结果中,如果我需要使用相同的随机数字运行相同的问题实例,我会使用该种子。这是常见的做法。 在研究数字精度的影响时,我遇到了以下问题:对于相同的Mersenne Twister种子,std::uniform_real_di...

8得票1回答
Ruby的rand函数有效种子范围是多少?

Ruby将PRNG实现为“具有2 ** 19937-1周期的修改的Mersenne Twister。”1 我的理解是MT在2 ^ 32个不同的种子上运行。使我困惑的是,Random.new(seed)接受任意大的数字,例如Random.new(2 ** 100)。 但是,我无法找到(逻辑)...