我有一个小数组,我需要在数组中随机改组值。我可以使用random.shuffle()在python中执行此操作,但我似乎可以弄清楚如何在C ++中执行此操作。
这是python中我想用C ++做的一个例子
#!/usr/bin/python
import random
array = [1,2,3,4,5]
random.shuffle(array)
print array
答案 0 :(得分:15)
您可以使用<algorithm>
中的std::random_shuffle
。
以下是该页面的基本示例:
#include <algorithm>
#include <vector>
#include <iostream>
#include <iterator>
int main()
{
const int SIZE=10;
// create and initialize an array
int arr[] = {1,2,3,4,5,6,7,8,9,10};
std::random_shuffle(arr, arr+SIZE);
// copy the contents of the array to output
std::copy(arr, arr+SIZE, std::ostream_iterator<int>(std::cout, " "));
std::cout << std::endl;
// shuffling an std:: container, here it's std::vector
std::vector<int> ivec(arr, arr+SIZE);
std::random_shuffle(ivec.begin(), ivec.end());
std::copy(ivec.begin(), ivec.end(), std::ostream_iterator<int>(std::cout, " "));
}
你可以使用任何使用随机访问迭代器的东西,比如std::vector
或std::deque
,或只是像上面那样的普通数组。