在C ++中随机播放2D数组

时间:2017-01-08 16:45:56

标签: c++ c++11 shuffle

我想逐行洗牌2D数组。例如,

arr = {{0,0},{0,1},{1,0},{1,1}};

洗牌之后,我需要这样的事情:

arr = {{1,0},{1,1},{0,0},{0,1}};

我可以自己做这件事。但我想知道那里有任何标准功能吗?

1 个答案:

答案 0 :(得分:2)

您应该可以使用std::shuffle()算法,如下所示:

#include <algorithm>
#include <iostream>
#include <random>

int main() {
  int arr[][2] = {{0, 0}, {0, 1}, {1, 0}, {1, 1}};
  std::random_device rd;
  std::mt19937 g(rd());

  std::shuffle(std::begin(arr), std::end(arr), g);

  for(auto &row: arr)
    std::cout << row[0] << ',' << row[1] << '\n';

  return 0;
}