Jak zapewnić tasowanie dwóch różnych wektorów w tej samej kolejności w C ++? [duplikować

To pytanie ma już odpowiedź tutaj:

Random_shuffle algorytm - czy identyczne wyniki są generowane bez funkcji losowego generatora? 3 odpowiedzi

Mam dwa wektory:

vector1 = [1 2 3 4 5 6 7 8 9]

vector2 = [1 2 3 4 5 6 7 8 9]

Chcę się upewnić, że kiedy przetasuję oba za pomocą random_shuffle należy je potasować w tej samej kolejności. Na przykład

Wyjście po tasowaniu powinno wyglądać tak:

vector1 = [1 9 3 4 2 7 8 5 6]

vector2 = [1 9 3 4 2 7 8 5 6]

Ale otrzymuję dane wyjściowe takie jak:

vector1 = [5 1 7 4 2 3 9 8 6]

vector2 = [3 4 1 9 8 2 5 7 6]

Heres mój kod:

int main () 
{
  std::srand ( unsigned ( std::time(0) ) );
  std::vector<int> vector1, vector2;

  // set some values:
  for (int i=1; i<10; ++i)
  {
    vector1.push_back(i);
    vector2.push_back(i);
  }

  // using built-in random generator:
  std::random_shuffle ( vector1.begin(), vector1.end() );
  std::random_shuffle ( vector2.begin(), vector2.end() );

  // print out content:
  std::cout << "vector1 contains:";
  for ( std::vector<int>::iterator it1 = vector1.begin(); it1 != vector1.end(); ++it1 )
    std::cout << ' ' << *it1;

  std::cout << '\n';
  std::cout << '\n';

  std::cout << "vector2 contains:";
  for ( std::vector<int>::iterator it2 = vector2.begin(); it2 != vector2.end(); ++it2 )
    std::cout << ' ' << *it2;

  std::cout << '\n';
  std::cout << '\n';

  return 0;
}

EDYTOWA To jest przykładowy przypadek, który próbowałem zaimplementować. W praktyce mam jeden wektor obrazów i jeden wektor odpowiednich etykiet. Potrzebuję ich przetasować w ten sam sposób. Czy ktoś mógłby pomóc ...... wielkie dzięki !!

questionAnswers(8)

yourAnswerToTheQuestion