Случайный элемент на карте
Мне нравится ответ Джеймса, если random-generator карта маленькая или вам не cxx нужно очень часто случайное rand значение. Если он большой random-generator и вы делаете это достаточно random-generator часто, чтобы сделать скорость prng важной, вы можете сохранить random-sample отдельный вектор значений prng ключа для выбора случайного rand значения.
map<...> MyMap;
vector<...> MyVecOfKeys; // <-- add keys to this when added to the map.
map<...>::key_type key = MyVecOfKeys[ random_0_to_n(MyVecOfKeys.size()) ];
map<...>::data_type value = MyMap[ key ];
Конечно, если карта random-numbers действительно огромна, вы map не сможете хранить копии prng всех ключей вот так. Если random-numbers вы можете себе это позволить, вы random получаете преимущество поиска random в логарифмическом времени.
c++
random
map
Случайный элемент на карте
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.