package Ġcom . github . um ire on . my _ random _ stuff Ċ Ċ private Ġfun Ġrot l ( x : ĠLong , Ġk : ĠInt ): ĠLong Ġ{ ĊĠĠĠ Ġreturn Ġ( x Ġshl Ġk ) Ġor Ġ( x Ġ ush r Ġ( 6 4 Ġ- Ġk )) Ċ } Ċ Ċ private Ġval ĠJ UMP Ġ= Ġlong ArrayOf (- 4 7 0 7 3 8 2 6 6 6 1 2 7 3 4 4 9 4 9 , Ġ- 2 8 5 2 1 8 0 9 4 1 7 0 2 7 8 4 7 3 4 ) Ċ Ċ class ĠX or oshi ro 1 2 8 Plus Ġprivate Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġvar Ġstate : ĠLong Array Ċ ) Ġ: ĠAbstract Random 6 4 Ġ{ ĊĊĠĠĠ Ġconstructor ( seed : ĠLong ) Ġ: Ġthis ( Long Array ( 2 ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġseq Ġ= ĠSplit Mix 6 4 ( seed ) ĊĠĠĠĠĠĠĠ Ġthis [ 0 ] Ġ= Ġseq . next () ĊĠĠĠĠĠĠĠ Ġthis [ 1 ] Ġ= Ġseq . next () ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġoverride Ġfun Ġnext (): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġs 0 Ġ= Ġstate [ 0 ] ĊĠĠĠĠĠĠĠ Ġvar Ġs 1 Ġ= Ġstate [ 1 ] ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġs 0 Ġ+ Ġs 1 ĊĊĠĠĠĠĠĠĠ Ġs 1 Ġ= Ġs 1 Ġxor Ġs 0 ĊĠĠĠĠĠĠĠ Ġstate [ 0 ] Ġ= Ġrot l ( s 0 , Ġ 5 5 ) Ġxor Ġs 1 Ġxor Ġ( s 1 Ġshl Ġ 1 4 ) ĊĠĠĠĠĠĠĠ Ġstate [ 1 ] Ġ= Ġrot l ( s 1 , Ġ 3 6 ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġjump () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġs 0 Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠ Ġvar Ġs 1 Ġ= Ġ 0 L ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( jump Ġin ĠJ UMP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( b Ġin Ġ 0 Ġuntil Ġ 6 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( jump Ġand Ġ( 1 L Ġshl Ġb ) Ġ!= Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs 0 Ġ= Ġs 0 Ġxor Ġstate [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs 1 Ġ= Ġs 1 Ġxor Ġstate [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġstate [ 0 ] Ġ= Ġs 0 ĊĠĠĠĠĠĠĠ Ġstate [ 1 ] Ġ= Ġs 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsplit (): ĠX or oshi ro 1 2 8 Plus Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Random Ġ= ĠX or oshi ro 1 2 8 Plus ( long ArrayOf (* state )) ĊĠĠĠĠĠĠĠ Ġnew Random . jump () ĊĠĠĠĠĠĠĠ Ġreturn Ġnew Random ĊĠĠĠ Ġ} Ċ Ċ } Ċ