如何避免random_shuffle产生的重复结果

   2024-09-30 5680
核心提示:random_shuffle 函数在 C++17 中已被弃用,并在 C++20 中被移除。取而代之的是 std::shuffle 函数,它使用随机数生成器来打乱容

random_shuffle 函数在 C++17 中已被弃用,并在 C++20 中被移除。取而代之的是 std::shuffle 函数,它使用随机数生成器来打乱容器中的元素。为了避免产生重复的结果,你可以使用 std::mt19937 作为随机数生成器,并为其提供一个基于时间的种子。这样,每次运行程序时,都会得到不同的随机结果。

以下是一个使用 std::shuffle 的示例:

#include<iostream>#include<vector>#include<random>#include<chrono>int main() {    std::vector<int> numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};    // 使用基于时间的种子初始化随机数生成器    unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();    std::mt19937 random_engine(seed);    // 使用 std::shuffle 打乱容器中的元素    std::shuffle(numbers.begin(), numbers.end(), random_engine);    // 输出打乱后的元素    for (int num : numbers) {        std::cout<< num << " ";    }    std::cout<< std::endl;    return 0;}

这段代码首先创建一个包含 1 到 10 的整数向量。然后,它使用基于时间的种子初始化 std::mt19937 随机数生成器。最后,它使用 std::shuffle 函数打乱向量中的元素,并将结果输出到控制台。每次运行此程序时,都会得到不同的随机结果。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号