c – std :: default_random_engine生成0.0到1.0之间的值

我想要生成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);

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...