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)
使用Fisher-Yates 洗牌算法实现random_shuffle函数
在 random_shuffle() 对象向量时出现很多错误?