gpt4 book ai didi

c++ - 0-1之间的随机数生成以填充容器

转载 作者:行者123 更新时间:2023-11-30 05:16:24 25 4
gpt4 key购买 nike

我最近开始学习现代 C++,我一直在想。我知道我可以通过这种方式使用 Mersenne Twister 创建伪随机数:

std::random_device rnd;
std::mt19937 gen(rnd());
std::uniform_real_distribution<> dist(0.,1.);

所以我找到了算法 std::generate(iterator, iterator, generator) 所以,我的问题是。有没有什么办法可以用这个方法生成0到1之间的随机数并填充容器?

直到现在,我发现如果我举个例子:

std::generate(v.begin(),v.end(),std::rand); // i know rand() is crap
std::generate(v.begin(),v.end(),gen);

这两个工作正常,但 0. 和 1. 之间的数字会非常好,没有特定原因。

提前致谢。

最佳答案

您不能直接在 std::generate 中使用分布,因为它的 operator() 需要参数。但是,您可以将生成器和分发包捆绑在一个 lambda 中并使用它。

#include <algorithm>
#include <random>
#include <vector>

int main()
{
std::random_device rnd;
std::mt19937 gen(rnd());
std::uniform_real_distribution<> dist(0.,1.);

std::vector<double> data(20);

std::generate(data.begin(), data.end(), [&gen, &dist]() { return dist(gen); });
}

关于c++ - 0-1之间的随机数生成以填充容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42682145/

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