STL c++ std:: shuffle

необходимо перемешать первые 5 элементов вектора.не могу найти синтаксис шафла, нужен 3 аргумент но не понимаю какой

std::shuffle(box.begin(),box.end(), std::mt19937(std::random_device()()));

Ответы (1 шт):

Автор решения: Harry

Ну так вы все верно сделали. Третьим должен идти генератор случайных чисел.

int main()
{
    vector<int> box{ 1,2,3,4,5,6,7,8,9,10};

    shuffle(box.begin(),box.begin()+5, mt19937(random_device()()));
    for(auto i: box) cout << i << "  "; cout << endl;

    shuffle(box.begin(),box.begin()+5, mt19937(random_device()()));
    for(auto i: box) cout << i << "  "; cout << endl;

}

Вот, посмотрите тут - https://ideone.com/PY9ewe - ваш код вполне работает...

→ Ссылка