random_shuffle函数生成随机数

random_shuffle函数生成随机数C++中除了使用rand和srand函数产生随机数,STL中提供了一个更便捷的方法,即random_shuffle函数。这篇博客主要总结一下random_shuffle()的用法,rand和srand函数可以参考我的另一篇博客:C++随机数:rand和srand函数总结https://blog.csdn.net/m0_49070560/article/details/108557117.接下来我们说random_shuffle()。random_shuffle()函数原型如下:template

C++中除了使用rand和srand函数产生随机数,STL中提供了一个更便捷的方法,即random_shuffle函数。

这篇博客主要总结一下random_shuffle()的用法,rand和srand函数可以参考我的另一篇博客:

C++随机数:rand和srand函数总结
https://blog.csdn.net/m0_49070560/article/details/108557117.

接下来我们说random_shuffle()。

random_shuffle() 函数原型如下:

template<class RandomAccessIterator>
   void random_shuffle(
      RandomAccessIterator _First, //指向序列首元素的迭代器
      RandomAccessIterator _Last  //指向序列最后一个元素的下一个位置的迭代器
   );

这是一个函数模板,不知道什么叫模板的可以看这里:C++函数模板.

它有两个参数,参数一为指向序列首元素的迭代器,参数二为指向序列最后一个元素的下一个位置的迭代器。

首先我们用vector定义一个对象并赋值,注意包含vector的头文件:

//头文件#include <vector>
vector<int> vec;
for(int i=11 ; i < 26 ; i++)
{ 
   
     vec.push_back(i);
}

然后调用random_shuffle();

random_shuffle(vec.begin(),vec.end());

这里需要注意,random_shuffle函数和rand函数一样,需要一个能产生不同值的种子,没有的种子的话每次运行的结果都是相同的随机数序列。

种子的生成方式和rand一样:

// 头文件 #include <time.h>
srand(time(0));
遍历输出:

1.for_each();

函数原型如下:

template<typename _InputIterator, typename _Function>
    for_each(
    	_InputIterator __first, //指向序列首元素的迭代器
    	_InputIterator __last, //指向序列最后一个元素的下一个位置的迭代器
    	_Function __f //函数
    );

它的第三个参数是一个函数,可以用来执行具体的实现,比如输出,注意这里的参数必须和vector一样。

void i(int i) //输出 i
{ 
   
    cout << i << " ";
}
// 头文件 #include <algorithm> 
for_each(vec.begin(),vec.end(),i);

运行结果:

14 21 12 23 11 15 20 24 19 18 17 16 22 13 25

2.at();

at 函数的用法和下标运算差不多,它的优点在于如果出现越界,程序不会直接崩溃,而是会给出一个异常,我们可以对这个异常进行处理。

for(size_t i=0 ; i < vec.size() ; i++)
{ 
   
    cout << vec.at(i) << " ";
}

运行结果:

22 16 24 12 17 14 21 15 25 20 23 19 18 11 13

3.重载下标运算符

vector中对下标运算符进行了重载,这里可以直接使用。

for(size_t i=0 ; i < vec.size() ; i++)
{ 
   
     cout << vec[i] << " ";
}

运行结果:

13 23 19 16 12 25 22 15 24 14 20 11 18 17 21

4.使用迭代器

vector<int> :: iterator ite = vec.begin(); //迭代器指向头元素
for(ite ; ite != vec.end() ; ite++)
{ 
   
     cout << *ite <<" ";
}

运行结果:

12 20 13 18 22 21 17 25 11 19 14 15 23 24 16
获得单个随机数:

1.at();

可以用变量获取:

int a = vec.at(0);
cout << a << endl;

或者直接获取:

cout << vec.at(1) << endl;

2.下标运算

cout << vec[3] << endl;

3.back();

// back() 返回最后一个元素
cout << vec.back();

4.使用迭代器

vector<int> :: iterator ite = vec.begin();
cout << *ite;

今天的文章random_shuffle函数生成随机数分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/24485.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注