c++ - 在 C++ 中按行打乱二维数组

标签 c++ c++11 shuffle

我想逐行打乱二维数组。例如,

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

洗牌后,我需要这样的东西:

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

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

最佳答案

您应该能够使用 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;
}

关于c++ - 在 C++ 中按行打乱二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41535113/

相关文章:

c++ - OpenCV 错误 : Assertion failed in cross correlation

c++ - 在 C++ 或 Delphi 中播放 .mod 音频文件的库

c++ - 可变参数模板参数顺序,它们必须始终是最正确的参数吗?

C++:宏可以将 "abc"扩展为 'a' 、 'b' 、 'c' 吗?

java - 从列表中采样和删除随机元素

c++ - C++ 的持久性解决方案(带有 SQL 数据库)?

java - 如何解决这个难题?

c++ - 是否可以编写一个函数模板来返回参数的数量是否可以被 N 整除?

javascript - 单击按钮时的随机播放功能

java - java.util.Collections.shuffle(List list) 可以按照与 "sent to be shuffled"相同的顺序返回列表吗?