これはなかなか便利そうだ。さっそく仕事で使えそう(というか仕事で教えてもらったのだった...)。
本当に周期が232-1なのか気になったので試したみた。
#include <iostream> using namespace std; const uint32_t x0 = 2463534242; uint32_t xorshift() { static uint32_t x = x0; x = x ^ (x << 13); x = x ^ (x >> 17); return x = x ^ (x << 5); } int main(int argc, char *argv[]) { uint32_t i = 1; while (xorshift() != x0) ++i; cout << i << endl; return 0; }
実行結果
4294967295本当!
0 件のコメント:
コメントを投稿