我找到了一种在范围(aa,bb)中生成均匀随机数的方法,如下所示:
#include <random>
double randnum (double aa, double bb) //defining a function to create random numbers
{
static std::default_random_engine generator;
std::uniform_real_distribution<double> distribution (aa,bb);
return distribution(generator);
}
int main (){
for (i=1;i<50;i++){
cout<< randnum(0,1);
}
}
例如,randnum(0,1);创建一个介于0和1之间的随机数。问题是,在不同的运行期间,我在for循环中创建的随机序列完全相同。如何在不同的运行期间创建不同的随机数?
答案 0 :(得分:2)
使用一个非确定性的随机数引擎来播种一个性能更高,确定性更强的引擎,就像mersenne twister一样:
#include <iostream>
#include <random>
double randnum (double aa, double bb) { //defining a function to create random numbers
static std::random_device rd; // non-deterministic, but may be slow
static std::mt19937 engine{ rd() };
std::uniform_real_distribution<double> distribution (aa,bb);
return distribution(engine);
}
int main() {
for(int i=1; i<50; i++) {
std::cout<< randnum(0,1);
}
}