c++ random_shuffle c++17

在C++17中, std::random_shuffle() 已被废弃,而改用 std::shuffle() 函数。

std::shuffle() 函数用于将给定范围内的元素随机重排。它采用一个随机数生成器(例如 std::default_random_engine )来产生随机数,然后使用 Fisher-Yates 洗牌算法(也称为 Knuth 洗牌算法)来随机重排元素。

std::shuffle() 函数的语法如下:

template< class RandomIt, class URBG >
void shuffle( RandomIt first, RandomIt last, URBG&& g );

其中,firstlast分别表示需要重排的元素范围的起始和终止位置,g表示随机数生成器。

下面是一个简单的例子,展示了如何使用std::shuffle()函数将一个整数向量中的元素随机重排:

#include <iostream>
#include <vector>
#include <algorithm>
#include <random>
int main() {
    std::vector<int> nums{1, 2, 3, 4, 5};
    std::random_device rd;
    std::mt19937 g(rd());
    std::shuffle(nums.begin(), nums.end(), g);
    for (auto num : nums) {
        std::cout << num << " ";
    return 0;

上述代码中,首先创建了一个整数向量nums,然后创建了一个std::mt19937类型的随机数生成器g。最后,使用std::shuffle()函数将nums中的元素随机重排,并使用循环输出了重排后的结果。

需要注意的是,C++17中std::random_shuffle()函数已被废弃,如果需要在C++17及以上版本中随机重排元素,请使用std::shuffle()函数。

  •