<分区>
我正在尝试生成一个在 [0,1) 之间均匀分布的随机数,我已经尝试过 uniform_real_distribution 但我不知道它到底是如何工作的。我在下面有这段代码,但它每次都会生成接近相同的数字 ~.456
void RandomNumber()
{
srand(time(0));
double number=(double)rand()/((double)RAND_MAX+1);
cout<<"RANDOM NUMBER: "<<number<<endl;
}
<分区>
我正在尝试生成一个在 [0,1) 之间均匀分布的随机数,我已经尝试过 uniform_real_distribution 但我不知道它到底是如何工作的。我在下面有这段代码,但它每次都会生成接近相同的数字 ~.456
void RandomNumber()
{
srand(time(0));
double number=(double)rand()/((double)RAND_MAX+1);
cout<<"RANDOM NUMBER: "<<number<<endl;
}
最佳答案
不要使用 rand,它是一个糟糕的随机数生成器
每次调用生成器时不要重新设置种子
使用 C++11。更清晰易读、便携且易于维护
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_real_distribution<> dis(0, 1);//uniform distribution between 0 and 1
for (int n = 0; n < 10; ++n) {
std::cout << dis(gen) << ' ';
}
关于c++ - 生成[0,1)之间的随机数c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48716109/