可以通過使用隨機數生成器來實現打亂數組的函數。一種簡單的方法是使用Fisher-Yates算法,該算法將數組中的元素與隨機位置上的元素進行交換,直到數組中的所有元素都被遍歷一遍。
以下是一個用C++實現Fisher-Yates算法的示例代碼:
#include <cstdlib>
#include <ctime>
#include <vector>
void shuffleArray(std::vector<int>& nums) {
srand(time(0));
for (int i = nums.size() - 1; i > 0; i--) {
int j = rand() % (i + 1);
std::swap(nums[i], nums[j]);
}
}
使用該函數可以對一個整數數組進行隨機打亂。
在C++中生成隨機數可以使用標準庫中的<cstdlib>
頭文件中的rand()
函數。但是需要先調用srand()
函數來設置隨機數生成器的種子,可以使用當前時間作為種子。
以下是一個簡單的示例代碼:
#include <cstdlib>
#include <ctime>
int main() {
srand(time(0));
int randomNum = rand();
return 0;
}
可以通過對隨機數取模來獲得一個特定范圍內的隨機數,例如rand() % 100
可以生成一個0到99之間的隨機數。
C++標準庫中提供了std::shuffle
函數來對容器中的元素進行隨機打亂。該函數在<algorithm>
頭文件中定義。
以下是一個簡單的示例代碼:
#include <algorithm>
#include <vector>
int main() {
std::vector<int> nums = {1, 2, 3, 4, 5};
std::shuffle(nums.begin(), nums.end(), std::default_random_engine());
return 0;
}
使用std::shuffle
函數可以方便地對容器中的元素進行隨機打亂。