Код
var k = ds_map_find_first(map);
repeat (floor(random(ds_map_size(map)))) k = ds_map_find_next(map, k);
var v = ds_map_find_value(map, k);
// в k, v теперь случайные ключ+значение из map
Вкратце, функциями перебора пар ключей-значений находится случайная пара.
"Перемешивания" ds_map не бывает, потому что порядка у пар нет.