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

前端之家收集整理的这篇文章主要介绍了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&C++相关文章