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
函數,并將需要保持順序的元素范圍排除在外。這樣,只有指定范圍之外的元素會被隨機排序,而指定范圍內的元素將保持原來的順序。