Выбрать уникальное случайное подмножество из набора уникальных значений

C ++. Visual Studio 2010.

у меня естьstd::vector V из N уникальных элементов (тяжелый структуры). Как эффективно выбрать из него M случайных, уникальных элементов?

Например. V содержит 10 элементов: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, и я выбираю три ...

4, 0, 90, 7, 8Но НЕ это: 0, 5, 5 <--- не уникально!

STL является предпочтительным. Итак, как то так?

std::minstd_rand gen; // linear congruential engine??
std::uniform_int<int> unif(0, v.size() - 1);
gen.seed((unsigned int)time(NULL));

// ...?

// Or is there a good solution using std::random_shuffle for heavy objects?

Ответы на вопрос(3)

Ваш ответ на вопрос