如何在C ++中随机播放std :: vector

可以在Fisher-Yates随机播放算法中完成矢量随机播放。

在此算法中,对向量进行线性扫描,然后在所有其余元素(包括元素本身)中将每个元素交换为随机元素。

算法

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

以上是 如何在C ++中随机播放std :: vector 的全部内容, 来源链接: utcz.com/z/330913.html

回到顶部