gpt4 book ai didi

c++ - 用 std::uniform_real_distribution 初始化一个 N 大小的 std::vector

转载 作者:太空宇宙 更新时间:2023-11-04 14:52:15 25 4
gpt4 key购买 nike

我有一个 std::vector<double> x ,我在编译时不知道谁的大小。假设 vector 的大小是 N , 我想分配 N给它均匀分布随机值。我目前在循环中执行此操作

std::default_random_engine generator;
std::uniform_real_distribution<double> distribution_pos(0.0,1.0);
for (auto it = x.begin(); it != x.end(); it++)
{
*it = distribution_pos(generator);
}

这对我来说似乎不太优雅,所以我想知道是否有更聪明的方法来做到这一点?

最佳答案

我会使用std::generate:

std::vector<double> x(10);

std::default_random_engine gen{std::random_device{}()};
std::uniform_real_distribution<double> dist(0.0, 1.0);

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

注意:

您需要为随机数生成器设置种子,否则您每次都会得到相同的数字序列。

我不推荐 std::default_random_engine,因为该标准不保证跨实现或编译器版本的质量或再现性。

关于c++ - 用 std::uniform_real_distribution<double> 初始化一个 N 大小的 std::vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53825490/

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