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