您的位置:首页 > 编程语言 > C语言/C++

C++使用STL 把有序序列 生成 随机序列

2010-05-14 15:01 239 查看
请看下面的例子

ptrdiff_t myrandom(ptrdiff_t i){return rand()%i;}
ptrdiff_t (*p_myrandom)(ptrdiff_t)=myrandom;//此处定义一个函数指针,指向产生随机数的方法函数
template<typename T> void vrand(vector<T> &v,ptrdiff_t (*p_myrandom)(ptrdiff_t))
//这里定义一个模板函数,它可以把一个有序序列变成随机序列
{
if(p_myrandom==NULL)
{
random_shuffle(v.begin(),v.end());//此处调用STL中的模板函数产生随机序列
}
else
{
random_shuffle(v.begin(),v.end(),p_myrandom);//此处调用STL中的模板函数产生随机序列,并多一个参数,产生随机数的方法类
}
}

int vrandtest()
{
vector<char> vi;
vector<char>::iterator vp;
srand(unsigned(time(NULL))); //此处一定要,因为它重新产生一个随机种子,后面的随机序列才会改变,否则,每次产生的随机序列都是一样的
for(int i =0;i<10;i++) vi.push_back(i+'a');
for(vp=vi.begin();vp!=vi.end();++vp)
cout << *vp << " ";
cout << endl;
vrand<char>(vi,myrandom);//此处调用模板函数生成随机序列
for(vp=vi.begin();vp!=vi.end();++vp)
cout << *vp << " ";
cout << endl;
}


以上例子中因使用了模板,所以可以对各种类型进行随机排序。

以上例子中展示了C++,通过使用STL可以简单的实现随机序列,体现了STL的强大。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐