C++下数组随机shuffle的方法


最近在linux下用C++做实验,需要在1到n之间多次均匀随机选择m个元素(m

1)定义大小为n的数组,且数组元素即为序号0,1,2,...,n-a。

2)对数组进行shuffle操作,打乱数组元素的顺序。

3)取数组的前m个样本。


其中数组的shuffle操作如下:


// shuffle algorithm example
#include      // std::cout
#include     // std::shuffle
#include         // std::array
#include        // std::default_random_engine
#include        // std::chrono::system_clock

int main () {
  std::array foo {1,2,3,4,5};

  // obtain a time-based seed:
  unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();

  shuffle (foo.begin(), foo.end(), std::default_random_engine(seed));

  std::cout << "shuffled elements:";
  for (int& x: foo) std::cout << ' ' << x;
  std::cout << '\n';

  return 0;
}


你可能感兴趣的:(C++)