温馨提示×

C++中shuffle和随机数

c++
小樊
122
2024-07-13 04:36:30
栏目: 编程语言

在C++中,可以使用std::shuffle函数来打乱一个序列中的元素顺序。std::shuffle函数接受一个指向要打乱的序列的起始迭代器和一个指向序列末尾的迭代器,以及一个随机数生成器作为参数。下面是一个示例代码:

#include <iostream>
#include <algorithm>
#include <vector>
#include <random>

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

    // 打乱vec中的元素顺序
    std::random_device rd;
    std::mt19937 g(rd());
    std::shuffle(vec.begin(), vec.end(), g);

    for (int i : vec) {
        std::cout << i << " ";
    }
    
    return 0;
}

在上面的示例中,我们先创建了一个包含1到5的整数的vector。然后使用std::random_device生成一个随机种子,std::mt19937初始化一个随机数生成器,最后使用std::shuffle函数打乱vector中的元素顺序。

除了使用std::shuffle函数,我们还可以使用C++标准库中的随机数生成器来生成随机数。例如,可以使用std::uniform_int_distribution来生成一个指定范围内的随机整数。下面是一个示例代码:

#include <iostream>
#include <random>

int main() {
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<int> dis(1, 10);

    for (int i = 0; i < 10; ++i) {
        int rand_num = dis(gen);
        std::cout << rand_num << " ";
    }

    return 0;
}

在上面的示例中,我们使用std::uniform_int_distribution生成1到10之间的随机整数,并使用std::mt19937作为随机数生成器。在循环中生成10个随机数并输出到控制台。

0