Пара вопросов о новом std::sample
из последней версии libstdc ++ (c ++ 17).
Почему выходные данные упорядочены в соответствии с исходной строкой ввода? Если вы следуете примеру в документации, здесь ,
#include <iostream>
#include <random>
#include <string>
#include <iterator>
#include <algorithm>
int main()
{
std::string in = "abcdefgh", out;
std::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 : adfgh
вывод всегда в алфавитно-цифровом порядке. Если вы перевернете входную строку, вывод всегда будет в обратном алфавитно-цифровом порядке. Это также образцы без замены, я думаю, это связано с моим следующим вопросом.
В документации сказано, что функция может реализовывать выборку и отбор проб отбор проб, в чем разница между этими двумя методами и как их реализовать с использованием std::sample
?
Я также не уверен, почему функция принимает back_inserter_iterator
, а не другие insert_iterator
.