C++11のヘッダでは、既存のstd::random_shuffle()に加えてstd::shuffle()という関数が入りました。std::shuffle()の方は、C++11の乱数生成エンジンを受け取りやすいというのが特徴です。 template<class RandomAccessIterator, class UniformRandomNumberGenerator> void shuffle(RandomAccessIterator first, RandomAccessIterator last, UniformRandomNumberGenerator&& rand); 経緯を調べてみると、std::shuffle()は元々std::random_shuffle()という名前でした。 これはConcept-basedオーバーロードで既存のstd::random_shuffle