Advertisement
Guest User

Untitled

a guest
Apr 20th, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.80 KB | None | 0 0
  1. #pragma GCC optimize("Ofast")
  2. #pragma GCC target("avx,avx2,fma")
  3. #include <bits/stdc++.h>
  4. /* The state word must be initialized to non-zero */
  5. uint32_t xorshift32(uint32_t curr)
  6. {
  7.     /* Algorithm "xor" from p. 4 of Marsaglia, "Xorshift RNGs" */
  8.     uint32_t x = curr;
  9.     x ^= x << 13;
  10.     x ^= x >> 17;
  11.     x ^= x << 5;
  12.     return x;
  13. }
  14.  
  15. int main() {
  16.     std::cerr << "started" << std::endl;
  17.     const uint32_t mod = 1u << 31;
  18.     std::vector<bool> was(mod);
  19.     std::cerr << "memory allocated" << std::endl;
  20.     uint32_t x = 1, k = 0;
  21.     while(!was[x]) {
  22.         k++;
  23.         if (k % (1 << 20) == 0) { std::cerr << "current k = " << k << std::endl; }
  24.         was[x] = true;
  25.         x = xorshift32(x) % mod;
  26.     }
  27.     std::cout << "ended with k = " << k << std::endl;
  28.     return 0;
  29. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement