我想生成两个不相关的正态分布随机数X 1,X 2序列。
由于正态分布的随机数来自统一数,所以我需要的是两个不相关的统一序列。但是如何使用:
srand (time(NULL));
我想我需要播种两次或做类似的事情?
由于高质量随机数生成器生成的随机数是统一且独立的,因此您可以根据需要从中生成尽可能多的独立序列。
您不需要,也不应播种两个不同的生成器。
在C ++(11)中,应该使用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扭曲发生器。这种类型的生成器高效且具有良好的统计特性。对于(非加密安全的)生成器,应将其视为默认选择。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句