OK, what about the unique algorithm? This could be more efficient than only push_back if it's not already there approach, for relatively large number of unique values. That way the unique algorithm cycles through the vector once rather than through the whole vector every time.
If the vector of unique values is relatively very small and the whole list is very large, then find might be better. If the unique values is say 20 and the whole list is say factorial something.
You should only seed the PRNG once, so don't do it in a constructor.
I couldn't quite work out what you're doing, it seems awfully complicated. It wasn't obvious to me why the class had a pointer to a container.
You could use a sorted container (like set) to store values. If you need to preserve order, you can store values in a non-sorted container and only insert into that if the sorted container does not already have the value.