97得票6回答
如何获取NumPy随机数生成器的当前种子?

以下代码导入了NumPy并设置了种子。import numpy as np np.random.seed(42) 然而,我不想设置随机种子,而是更关心如何读取它。random.get_state() 似乎并不包含种子。文档 中没有明显的答案。 如果我没有手动设置随机种子,如何检索由 nump...

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

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

42得票5回答
健壮的随机数生成

我正在寻找一种性能良好、相对稳健的随机数生成器,不使用任何特殊硬件。它可以使用数学方法(如梅森旋转算法等),也可以从计算机中“收集熵”。在Linux等系统上,我们有一个drand48()函数,可以生成48位随机数。我想要一个类似的C++或C#函数/类,可以生成超过32位的随机数,并且低位和高位...

39得票9回答
如何从rand()函数中缩小数字的范围?

以下代码每秒输出一个随机数:int main () { srand(time(NULL)); // Seeds number generator with execution time. while (true) { int rawRand = ran...

31得票6回答
用于蒙特卡罗模拟的mt19937_64种子生成的最佳方法是什么?

我正在编写一个运行Monte Carlo模拟的程序;具体来说,我使用Metropolis算法。该程序需要生成可能达数十亿的“随机”数。我知道Mersenne twister在Monte Carlo模拟中非常流行,但我想确保以最佳方式初始化发生器。 目前,我正在使用以下方法计算32位种子:mt1...

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...

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

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

15得票1回答
PHP 的 mt_rand 函数如何生成种子?

我知道PHP的 mt_rand()不应该用于安全目的,因为其结果不具备密码学强度。 然而,很多PHP代码仍然这样使用,或者在更好的随机源不可用时使用它作为后备。 那么情况有多糟糕? mt_rand使用哪些随机源进行种子生成?而且,在密码应用中,mt_rand还存在其他安全问题吗?

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

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