Xorshift
これは T {\displaystyle T} を n {\displaystyle n} 回二乗すれば良いため、乱数列を調べるのと比較すると十分に速く調べられる。
完全なテストとしては、期待する周期 k {\displaystyle k} の約数 d {\displaystyle d} について T d ≠ I ⟺ k ≠ d {\displaystyle T^{d}\neq I\iff k\neq d} を示せば良い。例えば、 n {\displaystyle n} bitのビット列 x {\displaystyle x} に対する操作が
である場合、 T = ( I + L a ) ( I + R b ) ( I + L c ) {\displaystyle T=(I+L^{a})(I+R^{b})(I+L^{c})} である。但し、 L i , j a = { 1 i = j + a 0 otherwise {\displaystyle L_{i,j}^{a}={\begin{cases}1&i=j+a\\0&{\text{otherwise}}\end{cases}}} 及び R i , j a = { 1 i = j − a 0 otherwise {\displaystyle R_{i,j}^{a}={\begin{cases}1&i=j-a\\0&{\text{otherwise}}\end{cases}}} である。
別の例としては
に対しては ( x n + 1 y n + 1 z n + 1 w n + 1 ) = ( x n y n z n w n ) ⋅ T {\displaystyle ({\begin{smallmatrix}x_{n+1}&y_{n+1}&z_{n+1}&w_{n+1}\end{smallmatrix}})=({\begin{smallmatrix}x_{n}&y_{n}&z_{n}&w_{n}\end{smallmatrix}})\cdot T} のように立式し、 T = ( O O O ( I + L 11 ) ( I + R 8 ) I O O O O I O O O O I ( I + R 19 ) ) {\displaystyle T=\left({\begin{smallmatrix}O&O&O&(I+L^{11})(I+R^{8})\\I&O&O&O\\O&I&O&O\\O&O&I&(I+R^{19})\\\end{smallmatrix}}\right)} について同様に解く。各変数が32 bitだとすれば n = 128 {\displaystyle n=128} , 64 bitだとすれば n = 256 {\displaystyle n=256} であり、対応する d {\displaystyle d} は以下の表のようになる。