random_shuffle() needs a random access iterator...
Yes, of course
How about the data in a std::list and calling 'next permutation' a random number of times. A bit clunky I know, but maybe worth considering.
"It doesn't matter how beautiful your theory is, it doesn't matter how smart you are. If it doesn't agree with experiment, it's wrong."
Richard P. Feynman
* The Best Reasons to Target Windows 8
Learn some of the best reasons why you should seriously consider bringing your Android mobile development expertise to bear on the Windows 8 platform.