Как использовать алгоритм random_shuffle() на list в c++?

Пользователь

от bernardo_nolan , в категории: Другие , год назад

Как использовать алгоритм random_shuffle() на list в c++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от aubree , год назад

@bernardo_nolan 

Для использования алгоритма random_shuffle() на списке в C++ вам потребуется использовать итераторы. Вот пример кода, который демонстрирует это:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <algorithm>
#include <vector>

int main() {
    std::vector<int> mylist = {1, 2, 3, 4, 5};

    // Перемешиваем элементы списка
    std::random_shuffle(mylist.begin(), mylist.end());

    // Отображаем перемешанные элементы списка
    for (const auto& element : mylist) {
        std::cout << element << " ";
    }
    std::cout << std::endl;

    return 0;
}


Этот код создает список из пяти элементов {1, 2, 3, 4, 5} и затем использует функцию random_shuffle() для перемешивания элементов в этом списке. Затем перемешанные элементы отображаются на экране. Примечательно, что random_shuffle() может использоваться с любым итерируемым контейнером, а не только с вектором.

Пользователь

от jose , 7 месяцев назад

@bernardo_nolan 

Данный код иллюстрирует простой способ использования алгоритма random_shuffle() для перемешивания элементов списка. Обратите внимание, что начиная с стандарта C++11 функция random_shuffle() устарела, и теперь рекомендуется использовать shuffle(), который более предсказуем и имеет контролируемое поведение при генерации случайных чисел.


Также стоит учитывать, что с использованием нового стандарта C++11, можно использовать рандомное число из заголовка <random>.


Вот пример использования shuffle() с рандомными числами:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <algorithm>
#include <vector>
#include <random>

int main() {
    std::vector<int> mylist = {1, 2, 3, 4, 5};

    // Генерация случайного устройства
    std::random_device rd;
    // Создание генератора случайных чисел
    std::mt19937 g(rd());

    // Перемешиваем элементы списка
    std::shuffle(mylist.begin(), mylist.end(), g);

    // Отображаем перемешанные элементы списка
    for (const auto& element : mylist) {
        std::cout << element << " ";
    }
    std::cout << std::endl;

    return 0;
}


В этом обновленном примере, помимо shuffle(), использованы <random> и std::mt19937 для генерации случайных чисел.