我想要生成0.0到1.0之间的随机值
我试过使用
std::default_random_engine generator; std::uniform_real_distribution<float> distribution(0.0,1.0); float myrand = distribution(generator);
0.000022 0.085032 0.601353 0.891611 0.967956 0.189690 0.514976 0.398008 0.262906 0.743512 0.089548
解决方法
// 1-st variant: using time() function for seed random distribution std::default_random_engine generator(time(0)); std::uniform_real_distribution<double> distribution(first,last); return distribution(generator); /*disadvantages:
如果使用相同的随机数生成器的开放乘法程序
他们将输出相同的结果,因为它们具有与时间相同的种子价值.
这个问题是通过使用随机设备解决的,请参见以下说明:* /
// 2-nd variant: std::uniform_real_distribution<double> distribution(first,last); std::random_device rd; std::default_random_engine generator( rd() ); return distribution(generator);