如何使用 C++ 对 std::vector 进行洗牌
可以在 Fisher-Yates 洗牌算法中完成 vector 洗牌。
在此算法中,线性扫描 vector 然后将每个元素与所有剩余元素(包括元素本身)中的随机元素交换。
算法
Begin Declare a function show(). Pass a constructor of a vector as a parameter within show() function. for (auto const& i: input) Print the value of variable i. Declare v of vector type. Initialize some values into v vector in array pattern. Declare a variable size of the integer datatype. Call size() function to get the size of the vector. Initialize size = v.size(). for (int i = 0; i < size - 1; i++) int j = i + rand() % (size - i). call swap() function to swap the values of v[i] and v[j]. print “Elements after getting shuffled”. Call show() function to display the suffled value of v vector. End.
示例代码
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void show(vector<int> const &input) {
for (auto const& i: input) {
std::cout << i << " ";
}
}
int main() {
vector<int> v = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int size = v.size();
for (int i = 0; i < size - 1; i++) {
int j = i + rand() % (size - i);
swap(v[i], v[j]);
}
cout<<"Elements after getting shuffled"<<endl;
show(v);
return 0;
}输出
Elements after getting shuffled 2 8 5 3 1 9 4 7 6
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP