| 66 | } |
| 67 | |
| 68 | static std::unordered_set<std::string> MakeDistinctStrings(int32_t n_values) { |
| 69 | std::unordered_set<std::string> values; |
| 70 | values.reserve(n_values); |
| 71 | |
| 72 | // Generate strings between 0 and 24 bytes, with ASCII characters |
| 73 | std::default_random_engine gen(42); |
| 74 | std::uniform_int_distribution<int32_t> length_dist(0, 24); |
| 75 | std::uniform_int_distribution<uint32_t> char_dist('0', 'z'); |
| 76 | |
| 77 | while (values.size() < static_cast<uint32_t>(n_values)) { |
| 78 | auto length = length_dist(gen); |
| 79 | std::string s(length, 'X'); |
| 80 | for (int32_t i = 0; i < length; ++i) { |
| 81 | s[i] = static_cast<uint8_t>(char_dist(gen)); |
| 82 | } |
| 83 | values.insert(std::move(s)); |
| 84 | } |
| 85 | return values; |
| 86 | } |
| 87 | |
| 88 | template <typename T> |
| 89 | static void CheckScalarHashQuality(const std::unordered_set<T>& distinct_values) { |