fork download
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <random>
  4. #include <iterator>
  5.  
  6. template<typename Iter>
  7. void shuffle_range(Iter begin, Iter end)
  8. {
  9. static std::random_device rd;
  10. std::default_random_engine rng(rd());
  11. std::shuffle(begin, end, rng);
  12. }
  13.  
  14. int main()
  15. {
  16. std::vector<int> data;
  17. data.reserve(20);
  18. std::generate_n(std::back_inserter(data), data.capacity(),
  19. []{ static int i=0; return ++i;});
  20.  
  21. std::copy(data.begin(), data.end(),
  22. std::ostream_iterator<int>(std::cout, " "));
  23. std::cout << std::endl;
  24.  
  25. shuffle_range(data.begin(), data.end());
  26.  
  27. std::copy(data.begin(), data.end(),
  28. std::ostream_iterator<int>(std::cout, " "));
  29. std::cout << std::endl;
  30.  
  31. return 0;
  32. }
  33.  
Success #stdin #stdout 0s 3476KB
stdin
Standard input is empty
stdout
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 
18 6 19 15 4 20 8 17 5 1 12 13 2 7 3 10 16 11 14 9