diff --git a/libs/libpcache/src/faults.cpp b/libs/libpcache/src/faults.cpp index 1a75872..152cb83 100644 --- a/libs/libpcache/src/faults.cpp +++ b/libs/libpcache/src/faults.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include using namespace std; @@ -461,10 +462,16 @@ unordered_set SyncPagesPartsF::filter_pages_to_sync (vector pages_id) pages_id_filtered.insert(pages_id[i]); } break; - case SyncPagesPartsF::Pages::RANDOM: - // Random logic can be implemented here - // TO-DO + case SyncPagesPartsF::Pages::RANDOM: { + vector shuffled = pages_id; + mt19937 rng(random_device{}()); + shuffle(shuffled.begin(), shuffled.end(), rng); + uniform_int_distribution count_dist(1, total_pages); + int count = count_dist(rng); + for (int i = 0; i < count; ++i) + pages_id_filtered.insert(shuffled[i]); break; + } } for (const auto& page : pages_id) {