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