在C中仅对多维数组的行进行随机播放

在C中仅对多维数组的行进行随机播放,第1张

概述我是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] 我是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::arrayusing std::cout;using std::endl;using std::random_device;using std::mt19937;using std::begin;using std::end;// print arraystd::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;}
总结

以上是内存溢出为你收集整理的在C中仅对多维数组的行进行随机播放全部内容,希望文章能够帮你解决在C中仅对多维数组的行进行随机播放所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1229190.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存