美文网首页
C++ 从容器中随机选择一个元素

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

作者: 云石畅想 | 来源:发表于2019-03-28 10:57 被阅读0次
// random.cc
// c++11/c++14/c++17
#include <algorithm>
#include <iostream>
#include <iterator>
#include <random>
#include <vector>

using namespace std;

template<typename Iter, typename RandomGenerator>
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<typename Iter>
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<int> vec{0, 1, 2, 3, 4};
  for (auto i = 0; i < 10; ++i) {
    cout << *select_randomly(vec.begin(), vec.end()) << endl;
  }

  return 0;
}

相关文章

网友评论

      本文标题:C++ 从容器中随机选择一个元素

      本文链接:https://www.haomeiwen.com/subject/konfbqtx.html