Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma GCC optimize("Ofast")
- #pragma GCC target("avx,avx2,fma")
- #include <bits/stdc++.h>
- /* The state word must be initialized to non-zero */
- uint32_t xorshift32(uint32_t curr)
- {
- /* Algorithm "xor" from p. 4 of Marsaglia, "Xorshift RNGs" */
- uint32_t x = curr;
- x ^= x << 13;
- x ^= x >> 17;
- x ^= x << 5;
- return x;
- }
- int main() {
- std::cerr << "started" << std::endl;
- const uint32_t mod = 1u << 31;
- std::vector<bool> was(mod);
- std::cerr << "memory allocated" << std::endl;
- uint32_t x = 1, k = 0;
- while(!was[x]) {
- k++;
- if (k % (1 << 20) == 0) { std::cerr << "current k = " << k << std::endl; }
- was[x] = true;
- x = xorshift32(x) % mod;
- }
- std::cout << "ended with k = " << k << std::endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement