91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

如何在random_shuffle后保持部分元素順序

小樊
89
2024-09-04 07:24:38
欄目: 編程語言

random_shuffle 函數是 C++` 庫中的一個函數,用于對容器中的元素進行隨機排序

#include<iostream>
#include<vector>
#include<algorithm>
#include <ctime>
#include <cstdlib>

int main() {
    std::srand(std::time(0)); // 初始化隨機數生成器

    std::vector<int> nums = {1, 2, 3, 4, 5, 6, 7, 8, 9};

    // 定義需要保持順序的元素范圍
    int start = 2;
    int end = 5;

    // 對 [start, end) 范圍內的元素進行隨機排序
    std::random_shuffle(nums.begin() + start, nums.begin() + end);

    // 輸出結果
    for (int num : nums) {
        std::cout<< num << " ";
    }
    std::cout<< std::endl;

    return 0;
}

在這個示例中,我們創建了一個包含 1 到 9 的 std::vector。然后,我們使用 std::random_shuffle 函數對索引 2(包含)到 5(不包含)之間的元素進行隨機排序。注意,std::random_shuffle 已被棄用,建議使用 std::shuffle 函數代替。

為了實現類似的功能,你可以使用 std::shuffle 函數,并將需要保持順序的元素范圍排除在外:

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

int main() {
    std::random_device rd; // 用于生成隨機種子
    std::mt19937 g(rd()); // 使用 Mersenne Twister 算法的隨機數生成器

    std::vector<int> nums = {1, 2, 3, 4, 5, 6, 7, 8, 9};

    // 定義需要保持順序的元素范圍
    int start = 2;
    int end = 5;

    // 對 [0, start) 和 [end, nums.size()) 范圍內的元素進行隨機排序
    std::shuffle(nums.begin(), nums.begin() + start, g);
    std::shuffle(nums.begin() + end, nums.end(), g);

    // 輸出結果
    for (int num : nums) {
        std::cout<< num << " ";
    }
    std::cout<< std::endl;

    return 0;
}

在這個示例中,我們使用了 std::shuffle 函數,并將需要保持順序的元素范圍排除在外。這樣,只有指定范圍之外的元素會被隨機排序,而指定范圍內的元素將保持原來的順序。

0
图们市| 衡水市| 兴海县| 新郑市| 囊谦县| 呼图壁县| 榆社县| 工布江达县| 柳河县| 天水市| 高雄县| 汨罗市| 天津市| 阳东县| 乌鲁木齐县| 太白县| 福海县| 永修县| 维西| 乌拉特后旗| 六枝特区| 德阳市| 辽阳县| 婺源县| 诸暨市| 甘孜| 贺兰县| 高邮市| 大荔县| 博乐市| 潮州市| 兰考县| 军事| 周口市| 平潭县| 分宜县| 酒泉市| 大安市| 北京市| 晋州市| 宜兴市|