Różnice między wybraną wersją a wersją aktualną.
Both sides previous revision Previous revision Next revision | Previous revision | ||
random_sample_random_sample_n [2009/04/29 10:55] pplonski |
random_sample_random_sample_n [2009/04/29 10:59] (aktualna) pplonski |
||
---|---|---|---|
Linia 43: | Linia 43: | ||
== Parametry == | == Parametry == | ||
* ForwardIterator - iterator który pozwala tylko pobierać następne elementy | * ForwardIterator - iterator który pozwala tylko pobierać następne elementy | ||
- | * OutputIterator - iterator w którym można zapisać wartość do wskazywanej pozycji i przesunąć się do wskazywania na następny element ale nie można odczytać wartości i cofnąć się. | + | * OutputIterator - iterator w którym można zapisać wartość do wskazywanej pozycji i przesunąć się do wskazywania na następny element ale nie można odczytać wartości i cofnąć się |
* Distance - wartość całkowita wyznaczająca liczbę elementów na wyjściu | * Distance - wartość całkowita wyznaczająca liczbę elementów na wyjściu | ||
* RandomNumberGenerator - funktor (zachowanie takie samo jak dal random_sample), wartość Distance jest jego argumentem | * RandomNumberGenerator - funktor (zachowanie takie samo jak dal random_sample), wartość Distance jest jego argumentem | ||
Linia 82: | 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 97: | 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 << " "; |