2017-01-08 4 views
0

2次元配列を行ごとにシャッフルしたい。私は自分自身これを行うことができます2D配列をC++の行でシャッフルする

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

:たとえば、シャッフル後

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

は、私はこのようなものが必要。しかし、標準的な機能はあるのだろうか?

+0

は、[標準アルゴリズム機能]を見てみましょう(http://en.cppreference.com/w/cpp/algorithm)私はそこに何かを見つけることができると確信しています。 –

答えて

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; 
}