📜  在C++中随机播放vs random_shuffle(1)

📅  最后修改于: 2023-12-03 15:37:34.953000             🧑  作者: Mango

在C++中随机播放vs random_shuffle

在 C++ 中,我们可以使用随机播放来随机排列一个序列。本文将介绍两种在 C++ 中实现随机播放的方法:使用 srand()rand() 函数,以及使用 STL 中的 random_shuffle() 函数。

使用 srand()rand() 函数

下面是一个使用 srand()rand() 函数实现随机播放的示例代码:

#include <iostream>
#include <cstdlib> // 需要包含这个头文件


int main() {
    // 使用 time 函数来生成一个不同的随机种子
    srand(time(NULL)); 
    
    // 要随机排列的数组
    int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int n = sizeof(arr) / sizeof(arr[0]); // 数组的大小

    // 用冒泡排序来模拟随机排列过程
    for (int i = 0; i < n; ++i) {
        for (int j = i + 1; j < n; ++j) {
            if (rand() < rand()) { // 使用 rand() 函数来生成一个随机的布尔值
                std::swap(arr[i], arr[j]);
            }
        }
    }

    // 输出随机排列后的数组
    for (int i = 0; i < n; ++i) {
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}

使用 srand() 函数来设置随机种子,使得每次运行程序时生成的随机序列不同。使用 rand() 函数生成一个随机的布尔值,根据这个随机的布尔值来决定是否交换数组中两个位置的元素。在这个例子中,我们使用冒泡排序算法来模拟随机排列的过程。

使用 random_shuffle() 函数

STL 中的 random_shuffle() 函数可以更方便地实现随机播放。下面是一个使用 random_shuffle() 函数实现随机播放的示例代码:

#include <iostream>
#include <algorithm> // 需要包含这个头文件
#include <cstdlib> // 如果你使用的是 Windows,可以包含这个头文件来关闭编译器的警告


int main() {
    // 要随机排列的数组
    int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int n = sizeof(arr) / sizeof(arr[0]); // 数组的大小

    // 使用 random_shuffle() 函数来随机排列数组
    std::random_shuffle(arr, arr + n);

    // 输出随机排列后的数组
    for (int i = 0; i < n; ++i) {
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}

使用 random_shuffle() 函数可以更方便地实现随机播放。该函数接受两个迭代器参数,表示要随机排列的序列的区间。在本例中,我们传入了数组的起始地址和结束地址,从而随机排列了整个数组。

总结

本文介绍了两种在 C++ 中实现随机播放的方法:使用 srand()rand() 函数,以及使用 STL 中的 random_shuffle() 函数。两种方法都可以实现随机播放,但是使用 random_shuffle() 函数更方便,代码也更简洁。