gpt4 book ai didi

c++ - 特征值:t 为 1s 的随机二元 vector

转载 作者:行者123 更新时间:2023-11-30 03:40:04 27 4
gpt4 key购买 nike

我想计算 K*es,其中 K 是一个 Eigen 矩阵(维度 pxp)和 es 是一个 px1 随机二进制 vector ,值为 1。

例如,如果 p=5t=2 一个可能的 es[1,0,1,0, 0]'[0,0,1,1,0]' 等等...

如何使用 Eigen 轻松生成 es

最佳答案

我想出了一个更好的解决方案,它是 std::vector 的组合, Egien::Mapstd::shuffle .

std::vector<int> esv(p,0);
std::fill_n(esv.begin(),t,1);
Eigen::Map<Eigen::VectorXi> es (esv.data(), esv.size());
std::random_device rd;
std::mt19937 g(rd());
std::shuffle(std::begin(esv), std::end(esv), g);

这个解决方案是内存高效的(因为 Eigen::Map 不复制 esv )并且有很大的优势,如果我们想置换 es几次(就像在这种情况下),然后我们只需要重复 std::shuffle(std::begin(esv), std::end(esv), g);

也许我错了,但这个解决方案似乎比以前的解决方案更优雅、更高效。

关于c++ - 特征值:t 为 1s 的随机二元 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38333326/

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