C++. Visual Studio 2010.Chọn một tập hợp con ngẫu nhiên duy nhất từ một tập hợp các giá trị duy nhất
Tôi có std::vector
V của N yếu tố độc đáo (nặng cấu trúc). Làm thế nào hiệu quả có thể chọn M ngẫu nhiên, độc đáo, các yếu tố từ nó?
Ví dụ: V gồm 10 yếu tố: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} và tôi chọn ba ...
- 4, 0, 9
- 0, 7 , 8
- Nhưng KHÔNG PHẢI là: 0, 5, 5 < --- không phải là duy nhất!
STL được ưu tiên. Vì vậy, một cái gì đó như thế này?
std::minstd_rand gen; // linear congruential engine??
std::uniform_int<int> unif(0, v.size() - 1);
gen.seed((unsigned int)time(NULL));
// ...?
// Or is there a good solution using std::random_shuffle for heavy objects?
định nghĩa của bạn về 'duy nhất' thường được gọi là '(bản vẽ) mà không cần thay thế' –