我想要生成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 举报,一经查实,本站将立刻删除。