在C中仅对多维数组的行进行随机播放
发布时间:2020-12-16 07:23:17 所属栏目:百科 来源:网络整理
导读:我是C的初学者因此我在洗牌多维数组的行中面临问题.我已经查看了相关的解决方案,但没有帮助我. 这是我到目前为止所尝试的: int main(int argc,char **argv){ Arrayfloat,2,2 f1; f1 = allocate(4,4); f1[0][0] = 1.0; f1[0][1] = 2.0; f1[0][2] = 3.0; f1[0
我是C的初学者因此我在洗牌多维数组的行中面临问题.我已经查看了相关的解决方案,但没有帮助我.
这是我到目前为止所尝试的: int main(int argc,char **argv){ Array<float,2,2> f1; f1 = allocate(4,4); f1[0][0] = 1.0; f1[0][1] = 2.0; f1[0][2] = 3.0; f1[0][3] = 4.0; f1[1][0] = 5.0; f1[1][1] = 6.0; f1[1][2] = 7.0; f1[1][3] = 8.0; f1[2][0] = 9.0; f1[2][1] = 10.0; f1[2][2] = 11.0; f1[2][3] = 12.0; f1[3][0] = 13.0; f1[3][1] = 14.0; f1[3][2] = 15.0; f1[3][3] = 16.0; Array<float,2> feature1shuffled = shufflePoints(f1); cout<<feature1shuffled<<endl; return 0; } Array<float,2> shufflePoints(Array<float,2> dataSet){ random_device rd; mt19937 g(rd()); shuffle(begin(dataSet),end(dataSet),g); return dataSet; } 但它并没有根据行正确地进行混洗.有人可以帮我这个吗? 解决方法
这是一个有效的例子.它使用std :: array:
#include <algorithm> #include <random> #include <array> #include <iostream> #include <iterator> template <typename T,size_t x,size_t y> using Array = std::array<std::array<T,x>,y>; // use std::array using std::cout; using std::endl; using std::random_device; using std::mt19937; using std::begin; using std::end; // print array std::ostream& operator<<(std::ostream& os,const Array<float,4,4>& ar) { for(const auto& i : ar) { for(const auto& j : i) { std::cout << j << 't'; } std::cout << 'n'; } return os; } Array<float,4> shufflePoints(Array<float,4> dataSet){ random_device rd; mt19937 g(rd()); // this will shuffle the rows but not the elements within them shuffle(begin(dataSet),g); return dataSet; } int main(int argc,4> f1{}; // elements set to 0 //f1 = allocate(4,4); // not required f1[0][0] = 1.0; f1[0][1] = 2.0; f1[0][2] = 3.0; f1[0][3] = 4.0; f1[1][0] = 5.0; f1[1][1] = 6.0; f1[1][2] = 7.0; f1[1][3] = 8.0; f1[2][0] = 9.0; f1[2][1] = 10.0; f1[2][2] = 11.0; f1[2][3] = 12.0; f1[3][0] = 13.0; f1[3][1] = 14.0; f1[3][2] = 15.0; f1[3][3] = 16.0; // Array must have dimensions of 4,4 to access subscripts [3][3] Array<float,4> feature1shuffled = shufflePoints(f1); cout << feature1shuffled << endl; return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |