How to get a random element from a Set? Or in general, from a non-indexable collection?
Obviously A[rand(1:length(A))] doesn't work (where A is the Set). I tried this: function rand{T}(s::Set{T}) @assert !isempty(s) k = rand(1:length(s)) for x in s k -= 1 if k == 0; return x end end end But this is O(n), where n is the length of the set. Is there a more efficient way?