C++ 从容器中随机选择一个元素

// random.cc
// c++11/c++14/c++17
#include 
#include 
#include 
#include 
#include 

using namespace std;

template
Iter select_randomly(Iter start, Iter end, RandomGenerator *g) {
  std::uniform_int_distribution<> dis(0, std::distance(start, end) - 1);
  std::advance(start, dis(*g));
  return start;
}

template
Iter select_randomly(Iter start, Iter end) {
  static std::random_device rd;
  static std::mt19937 gen(rd());
  return select_randomly(start, end, &gen);
}

int main() {
  vector vec{0, 1, 2, 3, 4};
  for (auto i = 0; i < 10; ++i) {
    cout << *select_randomly(vec.begin(), vec.end()) << endl;
  }

  return 0;
}

你可能感兴趣的:(C++ 从容器中随机选择一个元素)