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