std::experimental:: sample
|
Défini dans l'en-tête
<experimental/algorithm>
|
||
|
template
<
class
PopulationIterator,
class
SampleIterator,
class
Distance,
class
URBG
>
|
(1) | (library fundamentals TS) |
|
template
<
class
PopulationIterator,
class
SampleIterator,
class
Distance
>
SampleIterator sample
(
PopulationIterator first, PopulationIterator last,
|
(2) | (library fundamentals TS v2) |
Sélectionne
n
éléments de la séquence
[
first
,
last
)
de telle sorte que chaque échantillon possible ait une probabilité égale d'apparition, et écrit ces éléments sélectionnés dans l'itérateur de sortie
out
.
Si n est supérieur au nombre d'éléments dans la séquence, sélectionne last - first éléments.
L'algorithme est stable uniquement si
PopulationIterator
satisfait aux exigences de
LegacyForwardIterator
.
Table des matières |
Paramètres
| first, last | - | paire d'itérateurs définissant la plage à partir de laquelle effectuer l'échantillonnage (la population) |
| out | - |
l'itérateur de sortie où les échantillons sont écrits. Ne doit pas se trouver dans la plage
[
first
,
last
)
|
| n | - | nombre d'échantillons à prélever |
| g | - | le générateur de nombres aléatoires utilisé comme source de hasard |
-
PopulationIterator
doit satisfaire aux exigences de
LegacyInputIterator
.
|
||
-
SampleIterator
doit satisfaire aux exigences de
LegacyOutputIterator
.
|
||
-
SampleIterator
doit également satisfaire aux exigences de
LegacyRandomAccessIterator
si
PopulationIterator
ne satisfait pas
LegacyForwardIterator
.
|
||
-
PopulationIterator
doit être inscriptible dans
out
.
|
||
-
Distance
doit être un type entier.
|
||
-
URBG
doit satisfaire aux exigences de
UniformRandomBitGenerator
et son type de retour doit être convertible en
Distance
.
|
||
Valeur de retour
Retourne une copie de out après le dernier échantillon qui a été produit, c'est-à-dire la fin de la plage d'échantillons.
Complexité
Linéaire en std:: distance ( first, last ) .
Notes
Cette fonction peut implémenter l'échantillonnage par sélection ou l'échantillonnage par réservoir.
Exemple
#include <experimental/algorithm> #include <iostream> #include <iterator> #include <random> #include <string> int main() { std::string in = "abcdefgh", out; std::experimental::sample(in.begin(), in.end(), std::back_inserter(out), 5, std::mt19937{std::random_device{}()}); std::cout << "five random letters out of " << in << " : " << out << '\n'; }
Sortie possible :
five random letters out of abcdefgh : cdefg
Voir aussi
|
(until C++17)
(C++11)
|
réorganise aléatoirement les éléments dans une plage
(modèle de fonction) |