gpt4 book ai didi

c++ - std::default_random_engine 生成介于 0.0 和 1.0 之间的值

转载 作者:可可西里 更新时间:2023-11-01 15:02:23 25 4
gpt4 key购买 nike

我希望能够生成介于 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);

如果打开多个程序,使用相同的随机数生成器,它们将输出相同的结果,因为它们具有相同的种子值,即时间。

这个问题通过使用随机设备解决,在下面的代码中:

// 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++ - std::default_random_engine 生成介于 0.0 和 1.0 之间的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15461140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com