fork download
  1. #include <iostream>
  2. #include <iomanip>
  3.  
  4. using namespace std;
  5.  
  6. class Random64
  7. {
  8. typedef unsigned long long uint64;
  9. public:
  10. typedef uint64 RandomValue;
  11. Random64& operator = (uint64 seed) { X = seed; return *this; }
  12. Random64(uint64 seed = 0):X(seed){};
  13. uint64 operator()(uint64 seed = uint64(-1))
  14. {
  15. const uint64 a = 3202034522624059733ULL;
  16. const uint64 c = 1ULL;
  17.  
  18. if (seed != uint64(-1)) X = seed;
  19. uint64 Y = a * X + c;
  20. X = a * Y + c;
  21. Y = (Y&0xFFFFFFFF00000000ULL) | (X >> 32);
  22. return Y;
  23. }
  24. // Не включая max
  25. uint64 operator()(uint64 min, uint64 max)
  26. {
  27. return (*this)()%(max-min) + min;
  28. }
  29. private:
  30. uint64 X;
  31. };
  32.  
  33. int main(int argc, const char * argv[])
  34. {
  35. Random64 r(time(0));
  36.  
  37. for(int i = 0; i < 100; ++i)
  38. cout << hex << setfill('0') << setw(16) << r() << endl;
  39. }
  40.  
Success #stdin #stdout 0.01s 5304KB
stdin
Standard input is empty
stdout
5d562d307468d15c
adea1142a5e2829b
ff7962f89545c96a
f407f5ba47b6b263
8abb757d0d1fc13f
e5f77466e6bfec58
d1f68059e640e27f
b746bb2baec1bc29
945977f55bcf6993
ccfdd117d4011613
14f1846ba92fa57e
a4daf16243c0ef15
52c51b94bd2d48dc
519db0cd44d963e4
77537eca648bae67
d658bd3b7580758f
61c6b2620ae9fa4b
6704cb202516bbe3
02777ae0c3263782
d1f613ac08f68845
d641a6b4cf8c49a9
5ee36f08daa78b13
0c1c57217fe9fa35
acf93227e1f9995c
5c6ff015b17f9892
f7612df0386c23a7
c48e59661142c0bf
c89b6fa7ae0ff7fe
0ba7bc5af03f68ea
10242f4fa7b73508
46ce82fddeb4754d
a86afa2c55b0c85b
e7b31b79801bbfa4
bb3ef3af70fb533c
6dc895239d84d62a
2b0ea0cad57afd60
97363706b3f82a38
f487466f0dce30b8
12237cf33a2f0a05
4c5e6e943536cac0
5469b0914966806a
d1dfada95c8252a8
43437c1d83dc1a92
a8a39703a7b5c70a
3f9d2c2b7f3c0341
3923cfec86daa543
4572d9d47b63def8
ee7b08aead82aeef
c7faced2ddc03943
b9d907d019656ab0
aaf635cb405c1ad8
90a0e75f38586bf4
91b092a5423ddf62
6007b5906c5a8c89
c095bd42da4c89e5
bf9132ed98f5aa2e
2c28c4f60e547528
6ea0cf1b8ec95d20
dcbd806469f33b40
8083fc5b9163e9c3
5ee8ccb9f2115212
d7d6b7601bb052e9
c605fc821c32032e
c352bf29f75b9253
bff579de2a96d124
e38185c251633dce
185b9df38538e4d1
7221c0d9941f1f87
1f8f988e15d3f726
5b0e9eebee66e340
93198293d41f28e5
9674bd08d6e3075d
776b556c064c071c
6102d06fbc80d34c
7ca22436849261d1
013aa0b60d6b7bf8
a0422a33ebd0bfe0
2a860908e8e4a611
0610c88b2aa4e06c
4351ab84aba1a40a
713a8c70bae07cf1
83f147430dc1a64c
82a9a2375b09184f
c664fa0b790c5620
86eb7225ab782bde
877370f1217a3ae9
20357534050225a8
4a87409d1bc1cc5c
a9ecf28bf8dcf6ed
6d8175c426de26c0
97594eaf11b811c1
02ad5a08afdd277a
e983d357514facd0
ea3267c62916f2f5
e37c76f43b0596d0
d39f42296bf0f112
00f4b51d71c94c8f
3e8a14b6efaf8da4
598f322c68b1feb7
6ff82079d4641e88