加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 03:29:30 所属栏目:百科 来源:网络整理
导读:我想要生成0.0到1.0之间的随机值 我试过使用 std::default_random_engine generator;std::uniform_real_distributionfloat distribution(0.0,1.0);float myrand = distribution(generator); 在循环中生成随机值可以让我总是这些值: 0.0000220.0850320.60135
我想要生成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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读