/* Ċ Ġ* ĠP ory gen Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) ĠL an tern Power ed Ġ< https :// www . lan tern powered . org > Ċ Ġ* ĠCopyright Ġ( c ) Ġcontributors Ċ Ġ* Ċ Ġ* ĠThis Ġwork Ġis Ġlicensed Ġunder Ġthe Ġterms Ġof Ġthe ĠMIT ĠLicense Ġ( MIT ). ĠFor Ċ Ġ* Ġa Ġcopy , Ġsee Ġ' LICENSE . txt ' Ġor Ġ< https :// opensource . org / licenses / MIT >. Ċ Ġ*/ Ċ package Ġorg . lan tern powered . p ory gen . util . random Ċ Ċ import Ġorg . lan tern powered . p ory gen . util . take Upper Bits Ċ import Ġkotlin . random . Random Ċ Ċ /** Ċ Ġ* ĠA Ġrandom Ġnumber Ġgenerator Ġimplementing Ġthe Ġ" xor 1 2 8 " Ġalgorithm . Ċ Ġ* Ċ Ġ* ĠHas Ġa Ġperiod Ġof Ġ 2 ^ 1 2 8 Ġ- Ġ 1 . Ċ Ġ*/ Ċ class ĠX or 1 2 8 Random Ġprivate Ġconstructor ( ĊĠĠĠ Ġprivate Ġvar Ġx : ĠInt , ĊĠĠĠ Ġprivate Ġvar Ġy : ĠInt , ĊĠĠĠ Ġprivate Ġvar Ġz : ĠInt , ĊĠĠĠ Ġprivate Ġvar Ġw : ĠInt Ċ ) Ġ: ĠRandom () Ġ{ ĊĊĠ Ġprivate Ġconstructor ( seed 1 : ĠInt , Ġseed 2 : ĠInt ) Ġ: Ġthis ( seed 1 , Ġseed 2 , Ġ 0 , Ġseed 1 . inv ()) ĊĊĠ Ġconstructor ( seed : ĠLong ) Ġ: Ġthis (( seed Ġand Ġ 0 xffffffff L ). toInt (), Ġ( seed Ġ ush r Ġ 3 2 ). toInt ()) ĊĊĠ Ġoverride Ġfun Ġnext Int (): ĠInt Ġ{ ĊĠĠĠ Ġval Ġx 0 Ġ= Ġx ĊĠĠĠ Ġval Ġt Ġ= Ġx 0 Ġxor Ġ( x 0 Ġshl Ġ 1 1 ) ĊĠĠĠ Ġx Ġ= Ġy ĊĠĠĠ Ġy Ġ= Ġz ĊĠĠĠ Ġval Ġw 0 Ġ= Ġw ĊĠĠĠ Ġz Ġ= Ġw 0 ĊĠĠĠ Ġval Ġw 1 Ġ= Ġ( w 0 Ġxor Ġ( w 0 Ġ ush r Ġ 1 9 )) Ġxor Ġ( t Ġxor Ġ( t Ġ ush r Ġ 8 )) ĊĠĠĠ Ġw Ġ= Ġw 1 ĊĠĠĠ Ġreturn Ġw 1 ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġnext Bits ( bit Count : ĠInt ): ĠInt Ġ= ĊĠĠĠĠĠ Ġnext Int (). take Upper Bits ( bit Count ) Ċ } Ċ