fork(1) download
  1. #include <random>
  2. #include <iostream>
  3. #include <iterator>
  4. #include <algorithm>
  5. using namespace std;
  6.  
  7. mt19937 engine; //mersenne twister
  8.  
  9. unsigned int one_of_n(unsigned int n) {
  10. unsigned int choice;
  11. for(unsigned int i = 0; i < n; ++i) {
  12. uniform_int_distribution<unsigned int> distribution(0, i);
  13. if(!distribution(engine))
  14. choice = i;
  15. }
  16. return choice;
  17. }
  18.  
  19. int main() {
  20. engine = mt19937(random_device()()); //seed random generator from system
  21. unsigned int results[10] = {0};
  22. for(unsigned int i = 0; i < 1000000; ++i)
  23. results[one_of_n(10)]++;
  24. ostream_iterator<unsigned int> out_it(cout, " ");
  25. copy(results, results+10, out_it);
  26. cout << '\n';
  27. }
Success #stdin #stdout 0.31s 4236KB
stdin
Standard input is empty
stdout
101008 99592 99725 100158 100504 99583 100000 99621 99823 99986