MCPcopy Create free account
hub / github.com/OpenPTrack/open_ptrack_v2 / ShuffleRange

Function ShuffleRange

rtpose_wrapper/src/gtest/gtest-all.cpp:699–716  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

697// shuffle to the end of the vector.
698template <typename E>
699void ShuffleRange(internal::Random* random, int begin, int end,
700 std::vector<E>* v) {
701 const int size = static_cast<int>(v->size());
702 GTEST_CHECK_(0 <= begin && begin <= size)
703 << "Invalid shuffle range start " << begin << ": must be in range [0, "
704 << size << "].";
705 GTEST_CHECK_(begin <= end && end <= size)
706 << "Invalid shuffle range finish " << end << ": must be in range ["
707 << begin << ", " << size << "].";
708
709 // Fisher-Yates shuffle, from
710 // http://en.wikipedia.org/wiki/Fisher-Yates_shuffle
711 for (int range_width = end - begin; range_width >= 2; range_width--) {
712 const int last_in_range = begin + range_width - 1;
713 const int selected = begin + random->Generate(range_width);
714 std::swap((*v)[selected], (*v)[last_in_range]);
715 }
716}
717
718// Performs an in-place shuffle of the vector's elements.
719template <typename E>

Callers 2

ShuffleFunction · 0.85
ShuffleTestsMethod · 0.85

Calls 2

GenerateMethod · 0.80
sizeMethod · 0.45

Tested by

no test coverage detected