您的位置:首页 > 其它

泛型算法(十七)之随机洗牌算法

2016-01-20 14:25 204 查看
1、random_shuffle(RandomAccessIterator first, RandomAccessIterator last):n个元素有n!个排列。该函数给出随机选择的一个排列。

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

//把序列c中的元素随机打乱顺序
std::random_shuffle(c.begin(), c.end());
//输出
for (auto var : c)
{
std::cout << var << ",";
}
//打印结果:8,1,9,2,0,5,7,3,4,6,


2、random_shuffle(RandomAccessIterator first, RandomAccessIterator last, RandomNumberGenerator& gen):使用给定的随机数发生器来生产随机选择的一个排列。

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

//使用给定的随机数发生器把序列c中的元素随机打乱顺序
std::random_shuffle(c.begin(), c.end(), [](int i){
return std::rand() % i;
});
//输出
for (auto var : c)
{
std::cout << var << ",";
}
//打印结果:8,1,9,2,0,5,7,3,4,6,


3、shuffle(RandomAccessIterator first, RandomAccessIterator last, URNG&& g):C11版,其中参数g为随机数发生器(uniform random number generator),如在<random>中定义的标准随机数发生器。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: