C++。 Visual Studio 2010.一意の値のセットから一意のランダムなサブセットを選択します。
私はstd::vector
V個のユニークな要素(重い構造体)を持っています。どのように効率的にM個のランダムでユニークな要素をそれから選ぶことができますか?
など。 {0、1、2、3、4、5、6、7、8、9}と私は3つ選択...
- 4,0、9
- 0、7:Vは、10個の要素が含まれています、8
- これはありません:0,5,5 5 < ---一意ではありません!
STLが好ましい。だから、これは何か?
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?
「ユニーク」の定義は、「交換なしで(図面)」と一般に呼ばれます。 –