C++常用算法random_shuffle

Posted YQ编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++常用算法random_shuffle相关的知识,希望对你有一定的参考价值。

random_shuffle

random_shuffle算法 shuffles 序列中的元素(first。最后)的随机顺序。

谓词版本使用 pred 函数生成要交换的元素的索引。Pred 必须是一个 function 对象,该对象采用参数n ,并返回0到(n-1)范围内的整数随机数字。

用于执行交换的谓词版本 random_shuffle operator= 。


所述random_shuffle算法洗牌的序列[First..Last)的随机顺序的元素。非谓词版本使用内部随机数生成器来生成要交换的元素的索引。random_shuffle 的谓词版本使用operator=来执行交换。


头文件:<algorithm>

功能描述:

  • 洗牌  指定范围内的元素随机调整次序



函数原型:

random_shuffle(iterator beg, iterator end);
//指定范围内的元素随机调整次序
//beg开始迭代器
//end结束迭代器

代码示例:

#include<iostream>
#include<vector>
#include<algorithm>
#include<ctime>
using namespace std;
//常用排序算法 random_shuffle
void myPrint(int val){
cout << val<<" ";
}
void test01(){
srand((unsigned int)time(NULL));
vector<int>v;
for (int i = 0; i < 10; i++)
{
v.push_back(i);
}
//利用洗牌 算法 打乱顺序
random_shuffle(v.begin(), v.end());
for_each(v.begin(), v.end(), myPrint);
cout << endl;
}
int main(){
test01();
system("pause");
return 0;
}


总结:random_shuffle洗牌算法比较实用,使用记得加随机数种子


以上是关于C++常用算法random_shuffle的主要内容,如果未能解决你的问题,请参考以下文章

C++ STL应用与实现64: 如何使用shuffle和random_shuffle : 洗牌 (since C++11)

C++提高编程C++全栈体系(二十七)

使用Fisher-Yates 洗牌算法实现random_shuffle函数

在 random_shuffle() 对象向量时出现很多错误?

Python 和 C++ 下字符串查找速度对比,你觉得Python适合算法竞赛吗

STL_算法_重排和分区(random_shufflepartitionstable_partition)