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