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