std::experimental:: sample
|
Definido en el encabezado
<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) |
Selecciona
n
elementos de la secuencia
[
first
,
last
)
de modo que cada muestra posible tenga igual probabilidad de aparición, y escribe esos elementos seleccionados en el iterador de salida
out
.
Si n es mayor que el número de elementos en la secuencia, selecciona last - first elementos.
El algoritmo es estable solo si
PopulationIterator
cumple con los requisitos de
LegacyForwardIterator
.
Contenidos |
Parámetros
| first, last | - | par de iteradores que forman el rango desde el cual realizar el muestreo (la población) |
| out | - |
el iterador de salida donde se escriben las muestras. No debe estar en el rango
[
first
,
last
)
|
| n | - | número de muestras a tomar |
| g | - | el generador de números aleatorios utilizado como fuente de aleatoriedad |
-
PopulationIterator
debe cumplir con los requisitos de
LegacyInputIterator
.
|
||
-
SampleIterator
debe cumplir con los requisitos de
LegacyOutputIterator
.
|
||
-
SampleIterator
también debe cumplir con los requisitos de
LegacyRandomAccessIterator
si
PopulationIterator
no cumple con
LegacyForwardIterator
.
|
||
-
PopulationIterator
debe ser escribible en
out
.
|
||
-
Distance
debe ser un tipo entero.
|
||
-
URBG
debe cumplir con los requisitos de
UniformRandomBitGenerator
y su tipo de retorno debe ser convertible a
Distance
.
|
||
Valor de retorno
Devuelve una copia de out después de la última muestra que fue enviada, es decir, el final del rango de muestras.
Complejidad
Lineal en std:: distance ( first, last ) .
Notas
Esta función puede implementar muestreo por selección o muestreo por reservorio.
Ejemplo
#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'; }
Salida posible:
five random letters out of abcdefgh : cdefg
Véase también
|
(until C++17)
(C++11)
|
reordena aleatoriamente elementos en un rango
(plantilla de función) |