当我编译和运行C ++时,随机生成器给出相同的结果

时间:2013-09-25 12:56:41

标签: c++ xcode

std::default_random_engine generator;
std::lognormal_distribution<double> distribution(0,8);
double number = distribution(generator);
cout<<number;

我需要在C ++中使用lognormal_distribution随机输入一个数字。 我第一次运行程序时得到的数字= 4.92852e-05。 但第二次,第三次,......我也得到了同样的结果。所以当我多次运行程序时,我需要不同的结果。我需要做什么???

提前致谢。

1 个答案:

答案 0 :(得分:1)

每次运行程序时都会得到相同的值,因为随机数生成器使用相同的种子。尝试:

#include <time.h>

std::default_random_engine generator;
generator.seed(time(0));
std::lognormal_distribution<double> distribution(0,8);
double number = distribution(generator);
std::cout<<number;

这应该使用当前时间为发生器播种。