在c++中变换向量的向量
Shuffle vector of vectors in C++
考虑vector<vector<int> > Vec
我想对Vec中每个vector<int>
中的int
值进行洗牌,并对vector< vector<int> >
进行洗牌。
我如何在c++中做到这一点?
我的主要目标是随机化一个整数矩阵,我已经使用vector<vector<int> > Vec
实现了。
当前,我正在尝试这样做:
unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
for(int i=0;i<Vec.size();i++) {
shuffle(Vec[i].begin(), Vec[i].end(), std::default_random_engine(seed));
}
shuffle(Vec.begin(),Vec.end());
// gives an error:
cluster.cpp:36:27: error: no matching function for call to ‘shuffle(std::vector<std::vector<int> >::iterator, std::vector<std::vector<int> >::iterator)’
可以使用shuffle
操作随机洗牌数组中的元素。你可以用两次这个来随机化这个数组。然而,它留下的问题是,数字在一行中被洗牌,行也被洗牌。这不是一个完全随机的洗牌,因为约束仍然存在。
为了获得真正的随机洗牌,我建议您将矩阵复制到一维向量中,洗牌该向量,然后将其重塑为矩阵。
变换向量的代码如下
#include <algorithm>
#include <random>
auto engine = std::default_random_engine{};
std::shuffle(std::begin(vector), std::end(vector), engine);
相关文章:
- 写入向量<向量<bool>>
- 函数向量_指针有不同的原型,我可以构建一个吗
- std::向量与传递值的动态数组
- 将值指定给向量(2D)的向量中的某个位置
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 如何使用向量的template_back函数
- 尝试通过多个向量访问变量时,向量下标超出范围
- 平面缓冲区可以利用向量中的 0 吗?还是其他小波比哈尔变换更好?
- 如何在 c++ 中将变换与对的向量一起使用
- 如何在 CPU 上计算向量变换?
- 可视化:如何使用R&T向量仿射变换Point3D?
- 更改std中的向量::在同一向量上变换
- 使用“变换”创建增加的向量
- 使用变换和加 () 对向量的元素进行求和和模 10^9+7<int>。有什么办法可以做到这一点吗?
- C++指针的变换向量
- std::对向量的向量进行变换
- 将 RANSAC 应用于向量<Point2f>以进行相似性变换
- 在c++中变换向量的向量
- 对包含特征向量的矩阵应用变换的更简便的方法
- std::变换一个向量