вывод std :: sample упорядочен - PullRequest
0 голосов
/ 08 апреля 2019

Пара вопросов о новом 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.

...