Różnice między wybraną wersją a wersją aktualną.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
random_sample_random_sample_n [2009/04/29 10:51] pplonski |
random_sample_random_sample_n [2009/04/29 10:58] pplonski |
||
---|---|---|---|
Linia 3: | Linia 3: | ||
Obie funkcje random_sample i random_sample_n pochodzą z rozszerzenia SGI i nie są częścią standardu C++. | Obie funkcje random_sample i random_sample_n pochodzą z rozszerzenia SGI i nie są częścią standardu C++. | ||
- | Złożoność obu algorytmów jest liniowa. | + | Złożoność obu algorytmów jest liniowa. |
+ | |||
+ | Funkcje te kopiują elementy z losową kolejnością. | ||
===== random_sample ===== | ===== random_sample ===== | ||
Linia 80: | Linia 82: | ||
/* random_sample */ | /* random_sample */ | ||
cout << "random_sample\n"; | cout << "random_sample\n"; | ||
- | int *ret_val; // wskaźnik na wartość zwracaną | + | int *ret_val; // wskaźnik na wartość zwracaną |
ret_val = __gnu_cxx::random_sample(A, A+N, B, B+n); // przykład działania | ret_val = __gnu_cxx::random_sample(A, A+N, B, B+n); // przykład działania | ||
cout << *(ret_val-1) << endl; // wartość zwrócona | cout << *(ret_val-1) << endl; // wartość zwrócona | ||
for(i = 0; i < n; ++i) | for(i = 0; i < n; ++i) | ||
- | cout << B[i] << " "; // wartości na wyjściu | + | cout << B[i] << " "; // wartości na wyjściu |
cout << endl; | cout << endl; | ||
- | RandomNumberGenerator rng; // funktor | + | RandomNumberGenerator rng; // funktor |
- | cout << rng(13) << endl; // przykład użycia funktora | + | cout << rng(13) << endl; // przykład użycia funktora |
__gnu_cxx::random_sample(A, A+N, B, B+n, rng); // wersja z genratorem zewnętrznym | __gnu_cxx::random_sample(A, A+N, B, B+n, rng); // wersja z genratorem zewnętrznym | ||
copy(B, B + n, ostream_iterator<int>(cout, " ")); // wypisanie z użyciem operatora ostream_iterator | copy(B, B + n, ostream_iterator<int>(cout, " ")); // wypisanie z użyciem operatora ostream_iterator | ||
Linia 95: | Linia 97: | ||
/* random_sample_n */ | /* random_sample_n */ | ||
cout << "random_sample_n\n"; | cout << "random_sample_n\n"; | ||
- | vector<int> vec; // wektor do zapisu elementów wyjściowych | + | vector<int> vec; // wektor do zapisu elementów wyjściowych |
vector<int>::const_iterator it; | vector<int>::const_iterator it; | ||
insert_iterator<vector<int> > ii(vec, vec.begin()); // insert_iterator do wstawiania elementów do wektora | insert_iterator<vector<int> > ii(vec, vec.begin()); // insert_iterator do wstawiania elementów do wektora | ||
- | __gnu_cxx::random_sample_n(A, A+N, ii, n); // przykład działania funkcji | + | __gnu_cxx::random_sample_n(A, A+N, ii, n); // przykład działania funkcji |
for(it = vec.begin(); it != vec.end(); ++it) | for(it = vec.begin(); it != vec.end(); ++it) | ||
cout << *it << " "; | cout << *it << " "; |