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 0s 4556KB
stdin
Standard input is empty
stdout
17305c12b2def9f2
9c1cb54f8922077f
e4de388af2f54ab6
ee0474e47ccafc12
b5387caca6186dcf
603522d1b61abca6
be113e1c86fd4fad
e0e02594f062b187
252d907cb0175ee7
a50e3db4a9e0209f
c904e791090abaf1
26d23cab474059e1
ed17d21818ab4748
5b3b6f7142855bd6
ece0864cfd18e41c
801243db1a2332a1
2f00e162aa74fd2c
9eb7610cd210c2e6
0eab39db9acca258
ff381b5d0c4c91c6
d62b2da3ab724c9c
0e873d5116f04a4c
9734c8d537648362
6d047fd423649ae3
a02e8d145ea699dc
788f765e257fa183
7b5ffb7869106091
6bd9edc8c0758eea
0e14f11034f7b4de
ca75d91bbb23bf77
4d2ff76fb5b274b2
3672846cd5d50e1b
098d5c76cfbf4939
77b54d6a7a272342
58109e6c86b194e6
784409a4270b78cb
3b61500dcc7c5161
c3da4e3518db7d96
fcb7cb6a3419e5db
8fa24986254ee8ed
040ac6dbf751a722
99f4e89813fde051
1ae37cd8861455f2
2cf2bbc4fd56038e
c9779ad0344c3696
8abeede0543ef31a
e7b083f8dbe24c49
ab73a1beb75c1eab
47f3c02c1e597c1c
303bf809904e04fd
e53f342aca0f5baa
38ddb029e648ed17
b47f3481a0dad101
d58decfe39e92478
bf28c6ff79535fd5
cc8acf8b62070f5d
d77fc44c66309def
ed94d0cd8e2ab05b
1299bc4707713ab7
8d378ef79f0b8dc6
352ae861a4a6d540
7b4cf37a43631572
88cc6769a9de6e69
77b08ccbcaa15cfe
28f1f2c8ebef1ad9
47b3db3fabf0a5ec
df8c1dc6edb31024
67f259569a54a3f1
e8cb90b7e1c1ba26
25a3b852c344a8d4
f22e13fa03ad0776
01fa2fb0c35686ec
c8ea4dc41429fe52
fb47b3837508e934
1339ea26e43a3c62
fda9512a5440c10d
bf294286c521abea
18a2054c0d712da1
8d6231aebca83e44
18f4d810b47d5290
7c776f31c5073e66
349077260b5d1a45
d35dd90a61ca0c9c
31d176bb75deff8e
897070fc51a0276b
4ea5bd421a1610ba
e7ff649567830212
03e6d01ab8a84832
001f47407510a0a2
a846fae6e916aa38
a93f2d7c31757164
b881e73a2b34e87a
7ffebbb234b2ac89
f65dc023e73369f3
44e38a370d394b09
5e428b708c72cb0b
a16bb724d212a597
3590e39c3d5b3ea5
7f75c62f8f8021b1
bbc5a72ed3efafb1