fork(1) download
  1. #include <algorithm>
  2. #include <iterator>
  3. #include <iostream>
  4.  
  5. auto generator(unsigned seed)
  6. {
  7. struct RandomNumberGenerator
  8. {
  9. explicit RandomNumberGenerator(unsigned s): seed(s) {}
  10.  
  11. int front()
  12. {
  13. return ((seed / 0x10000) * seed) >> 16;
  14. }
  15.  
  16. void popFront()
  17. {
  18. seed = seed * 1103515245 + 12345;
  19. }
  20.  
  21. bool empty() { return false; }
  22.  
  23. private:
  24. unsigned seed;
  25. };
  26.  
  27. return RandomNumberGenerator(seed);
  28. }
  29.  
  30. int main()
  31. {
  32. auto g = generator(5);
  33.  
  34. std::generate_n(std::ostream_iterator<int>(std::cout, "\t"), 10, [&](){ return g.popFront(), g.front(); });
  35. }
Success #stdin #stdout 0s 3296KB
stdin
Standard input is empty
stdout
26298	25347	52004	26314	22713	9193	9426	118	36355	10786