c++ - 如何使用c++生成不相关的随机序列

标签 c++ math random

我想生成两个不相关的正态分布随机数序列 X1、X2

由于正态分布的随机数来自均匀数,所以我需要的只是两个不相关的均匀序列。但如何使用:

srand (time(NULL));

我想我需要播种两次或做类似的事情?

最佳答案

由于高质量随机数生成器生成的随机数是均匀且独立的,因此您可以根据需要生成任意数量的独立序列。

您不需要,也不应该为两个不同的生成器提供种子。

在 C++(11) 中,您应该使用 pseudo-random number generator from the header <random> 。这是一个可以作为实际实现模板的最小示例:

std::random_device seed;
std::mt19937 gen{seed()};

std::normal_distribution<> dist1{mean1, sd1};
std::normal_distribution<> dist2{mean2, sd2};

现在您可以通过调用 dist1(gen) 生成独立的数字序列和dist2(gen)random_device用于为实际生成器提供种子,在我的代码中它是 Mersenne Twister 生成器。这种类型的生成器非常高效并且具有良好的统计特性。它应该被视为(非加密安全)生成器的默认选择。

关于c++ - 如何使用c++生成不相关的随机序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21327249/

相关文章:

math - 具有 k 个元素的集合可以分成多少个恰好有 n 个部分的不同分区?

c - 如何在C中取消初始化/dev/urandom的熵?

c++ - 如何结合 BOOST_PP_IF 和 BOOST_PP_LPAREN?

c++ - EXC_BAD_ACCESS,访问指针 vector 指向的对象时

c++ - 四元数相机。如何使其正确旋转?

java - 两个 vector/点之间的角度

algorithm - 从集合中选择元素,概率与元素值成正比

python - 随机 int64 和 float64 数字

c++ - 有没有办法将参数默认值设置为先前参数的函数? [C++]

c++ - RtlInitializeExceptionChain 有什么作用,如何减少它的执行开销?