高效率从vector中随机一个自己需要得数据,随机出来得数据可能是无效数据
时间: 2024-03-03 20:46:50 浏览: 54
实现从vector中过滤重复的数据
5星 · 资源好评率100%
你可以使用C++中的STL库中的random_shuffle函数来随机打乱vector中的元素顺序,然后取出前面的几个元素作为要得到的随机数据。代码示例如下:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
vector<int> v{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int n = 5; // 需要随机取出的数据个数
// 随机打乱vector中的元素顺序
srand(time(0)); // 设置随机数种子
random_shuffle(v.begin(), v.end());
// 取出前n个元素作为随机数据
vector<int> randomData(v.begin(), v.begin()+n);
for(int i=0; i<n; i++)
cout << randomData[i] << " ";
cout << endl;
return 0;
}
```
上述代码中,我们首先使用srand函数设置随机数种子,以保证每次运行程序都能得到不同的结果。然后使用random_shuffle函数打乱vector中的元素顺序,最后取出前n个元素作为随机数据。由于是随机取出的数据,有可能会取到无效数据,这需要在程序中进行处理。
阅读全文