std::experimental:: sample
|
定义于头文件
<experimental/algorithm>
|
||
|
template
<
class
PopulationIterator,
class
SampleIterator,
class
Distance,
class
URBG
>
|
(1) | (库基础 TS) |
|
template
<
class
PopulationIterator,
class
SampleIterator,
class
Distance
>
SampleIterator sample
(
PopulationIterator first, PopulationIterator last,
|
(2) | (库基础 TS v2) |
从序列
[
first
,
last
)
中选取
n
个元素,确保每个可能的样本出现概率相等,并将选中的元素写入输出迭代器
out
。
如果 n 大于序列中的元素数量,则选择 last - first 个元素。
该算法仅在
PopulationIterator
满足
LegacyForwardIterator
要求时保持稳定性。
目录参数
返回值返回 out 在最后输出的样本之后的副本,即样本范围的末端。 复杂度在 std:: distance ( first, last ) 范围内呈线性复杂度。 注释此函数可能实现选择抽样或蓄水池抽样。 示例
运行此代码
#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'; } 可能的输出: five random letters out of abcdefgh : cdefg 另见
| |||||||||||||||||||||||||||||||||