微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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);

原文地址:https://www.jb51.cc/c/111240.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐