Выбрать m элементов случайным образом из вектора, содержащего n элементов

У меня есть вектор, содержащий n элементов. Мне нужно выбрать подмножество из m элементов случайным образом из вектора без повторения. Как это сделать наиболее эффективно? Мне нужно сделать это несколько тысяч раз в моем коде.

Решение, которое мне приходит в голову, - использовать rand () для генерации случайного числа k между 0 и n . Затем выберите в векторе элемент k и вставьте его в std :: set . Продолжайте делать это, пока размер набора не станет равным м . Теперь я уверен, что набор содержит m уникальных элементов, случайно выбранных из набора n элементов.

Какие еще возможные решения?

Спасибо.

22
задан Vinay 18 February 2012 в 23:20
поделиться