| 493 | |
| 494 | enum class KPat { Random, Dups, Sorted, Reverse, AllEqual }; |
| 495 | std::vector<Keyed> keyed_pattern(KPat p, size_t n, uint32_t seed) { |
| 496 | std::mt19937 rng(seed); |
| 497 | std::vector<Keyed> v(n); |
| 498 | for (size_t i = 0; i < n; i++) { |
| 499 | v[i].idx = int32_t(i); |
| 500 | switch (p) { |
| 501 | case KPat::Random: v[i].key = int32_t(rng() & 0x3FFF); break; |
| 502 | case KPat::Dups: v[i].key = int32_t(rng() % 8); break; // heavy duplicates |
| 503 | case KPat::Sorted: v[i].key = int32_t(i); break; |
| 504 | case KPat::Reverse: v[i].key = int32_t(n - i); break; |
| 505 | case KPat::AllEqual: v[i].key = 42; break; |
| 506 | } |
| 507 | } |
| 508 | return v; |
| 509 | } |
| 510 | |
| 511 | } // namespace |
| 512 | |